<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8723582074539021948</id><updated>2012-02-12T18:09:39.164-05:00</updated><category term='visual studio'/><category term='floating point'/><category term='c#'/><category term='stackoverflow'/><category term='linq'/><category term='xaml'/><category term='tfs'/><category term='wpf'/><category term='fortran'/><category term='C/C++'/><category term='Video Education'/><category term='COM Interop'/><category term='EMT/Paramedic'/><category term='windows'/><category term='.net'/><category term='standards'/><category term='alaska'/><category term='EKG Myth'/><category term='assembly'/><category term='networking'/><category term='misc'/><title type='text'>My Variables Only Have 6 Letters</title><subtitle type='html'>Programming in languages older than you are is fun...and sometimes I get to shock somebody.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>81</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-3145303153362872721</id><published>2012-02-07T17:23:00.000-05:00</published><updated>2012-02-08T17:15:04.778-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>J-waves after ROSC and Intra-arrest Therapeutic Hypothermia</title><content type='html'>The following is the post-resuscitation 12-Lead electrocardiogram of an 82 year old female who received intra-arrest therapeutic hypothermia, via chilled saline and ice packs, as part of a new protocol for cardiac arrest management. The patient also received three defibrillations and was administered epinephrine, naloxone, and amiodarone during the&amp;nbsp;resuscitation.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-WGFRl-688Kw/TzGZWbIndJI/AAAAAAAABzU/iKSaHd-fqZI/s1600/82yo+F+-+Cardiac+Arrest+-+ROSC+-+Initial+12-Lead.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="151" src="http://2.bp.blogspot.com/-WGFRl-688Kw/TzGZWbIndJI/AAAAAAAABzU/iKSaHd-fqZI/s400/82yo+F+-+Cardiac+Arrest+-+ROSC+-+Initial+12-Lead.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;12-Lead ECG obtained approximately 5 minutes after ROSC&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;The post arrest 12-Lead ECG shows a sinus rhythm with frequent premature atrial and ventricular ectopic complexes. The LifePak 12, which uses the GE Marquette 12SL algorithm, displayed the ominous&amp;nbsp;&lt;b&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;*** ACUTE MI SUSPECTED ***&lt;/span&gt;&lt;/b&gt; message and suggested a lateral injury pattern.&lt;br /&gt;&lt;br /&gt;Closer inspection of&amp;nbsp;the lateral precordial leads&amp;nbsp;reveals the ST-elevations present are actually giant J-waves, or Osborn waves.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-d-NZeDWiSig/TzGbcaCzzLI/AAAAAAAABzc/gtYrbO1ck7o/s1600/82yo+F+-+Cardiac+Arrest+-+V5-V6+Osborn+Waves.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="162" src="http://4.bp.blogspot.com/-d-NZeDWiSig/TzGbcaCzzLI/AAAAAAAABzc/gtYrbO1ck7o/s320/82yo+F+-+Cardiac+Arrest+-+V5-V6+Osborn+Waves.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;J-waves--or Osborn waves--appreciated in the lateral precordial leads&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Recognizing this finding is present, a closer look at the entire 12-Lead ECG shows that subtle J-waves are present in almost every lead group.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-bvx5Y3wZdsE/TzGdKPltrSI/AAAAAAAABzk/uRx8_YPPwHo/s1600/82yo+F+-+Cardiac+Arrest+-+ROSC+-+Subsequent+12-Lead.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="161" src="http://3.bp.blogspot.com/-bvx5Y3wZdsE/TzGdKPltrSI/AAAAAAAABzk/uRx8_YPPwHo/s400/82yo+F+-+Cardiac+Arrest+-+ROSC+-+Subsequent+12-Lead.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Subsequent 12-Lead ECG obtained 17 minutes after ROSC&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;A repeat 12-Lead ECG acquired 12 minutes later shows a sinus tachycardia with a single PAC, without the giant J-waves from the initial ECG, diffuse ST/T-wave changes consistent with ischemia are also present. However, small J-point elevation persists in the lateral precordials. The computerized interpretation no longer believes a STEMI-pattern is present and incorrectly identifies the rhythm as atrial fibrillation.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-VXh1x8pbpEw/TzGepgdNYcI/AAAAAAAABzs/x3Fa0Yw2uUA/s1600/82yo+F+-+Cardiac+Arrest+-+Precordial+Comparison.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="262" src="http://3.bp.blogspot.com/-VXh1x8pbpEw/TzGepgdNYcI/AAAAAAAABzs/x3Fa0Yw2uUA/s400/82yo+F+-+Cardiac+Arrest+-+Precordial+Comparison.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Comparison of the precordial leads between the first and subsequent 12-Lead ECG.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;A side by side look at the precordial leads provides an interesting look at the near resolution of the giant J-waves post-ROSC.&lt;br /&gt;&lt;br /&gt;One explanation for the normalization of the traditional electrocardiographic findings of hypothermia may be related to the management of the patient's&amp;nbsp;ventilation&amp;nbsp;both intra-arrest and post-arrest. As the patient's pH normalized with mechanical ventilation and a perfusing rhythm, so did the repolarization abnormalities (visualized as J-waves).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: x-small;"&gt;References&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Antzelevitch C, Yan GX. J Wave Syndromes. &lt;i&gt;Heart Rhythm&lt;/i&gt;. 2010; 7(4):549-558. [&lt;a href="http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2843811/"&gt;FullText&lt;/a&gt;]&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Fenstad ER, et al. Therapeutic hypothermia in out of hospital sudden cardiac arrest: Significance of J-waves. &lt;i&gt;J Am Coll Cardio&lt;/i&gt;. 2011; 57(14):Suppl 5, E1002. [&lt;a href="http://content.onlinejacc.org/cgi/reprint/55/20/2287.pdf"&gt;PDF FullText&lt;/a&gt;]&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;Edelman ER, Joynt K. J Waves of Osborn Revisited. &lt;i&gt;J Am Coll Cardio&lt;/i&gt;. 2010; 55(20):2287. [&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/20466208"&gt;PubMed&lt;/a&gt;]&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: x-small;"&gt;&lt;a href="http://hqmeded-ecg.blogspot.com/2011/11/osborn-waves-and-hypothermia.html"&gt;Dr. Smith's ECG Blog: Osborn Waves and Hypothermia.&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-3145303153362872721?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/3145303153362872721/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=3145303153362872721' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/3145303153362872721'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/3145303153362872721'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2012/02/j-waves-after-rosc-and-intra-arrest.html' title='J-waves after ROSC and Intra-arrest Therapeutic Hypothermia'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-WGFRl-688Kw/TzGZWbIndJI/AAAAAAAABzU/iKSaHd-fqZI/s72-c/82yo+F+-+Cardiac+Arrest+-+ROSC+-+Initial+12-Lead.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-3814676283950811227</id><published>2011-12-26T20:52:00.000-05:00</published><updated>2011-12-26T21:42:17.970-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><category scheme='http://www.blogger.com/atom/ns#' term='assembly'/><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Philips Healthcare's Sierra ECG format XLI Compression Scheme</title><content type='html'>One of the services I work for has recently acquired a &lt;a href="http://www.healthcare.philips.com/us_en/products/resuscitation/products/MRx/mrx_ems.wpd" target="_blank"&gt;Philips HeartStart MRx cardiac monitor&lt;/a&gt;. It came complete with Bluetooth transmission of 12-Lead and event data. At roughly the same time our service installed a computer, an MDT, into the cab of our unit to interface with our county's &lt;a href="http://en.wikipedia.org/wiki/Computer-aided_dispatch" target="_blank"&gt;CAD software&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Naturally I linked our monitor and our MDT via Bluetooth, and transmitted a 12-Lead from a rhythm generator. When the file landed on the MDT, I looked for an application to view the 12-Leads and rhythm strips, however, none appeared to be able to use the file as-is.&lt;br /&gt;&lt;br /&gt;For the non-technical, the ECGs are shipped compressed--somewhat like a ZIP file--which contains all of your monitored vital signs, printed rhythm strips, and your 12-Leads. The format of the 12-Leads is an Open Standard; Philips Healthcare provides most of the details needed to use the files. The 12-Lead data is also compressed to save space. Unfortunately, there is no documentation which tells you how to decompress the 12-Lead data.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;The technically-faint-of-heart should &lt;a href="#end"&gt;skip these next bits&lt;/a&gt;.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;For the technical, the ECGs are contained in a Gzip'd TAR archive. The 12-Leads are stored inside in an XML format known as the Sierra ECG format (currently at version 1.03 or 1.04, as far as I can tell). Inside this XML format is Base64 encoded, XLI compressed data comprising the acquired leads during a 12-Lead (up to 16 leads appear to be able to be stored).&lt;br /&gt;&lt;br /&gt;I searched for a description of the XLI compression format, however, I was only able to find a reference implementation for Microsoft Windows which simply decoded the files. No code or description was provided and the implementation itself is not portable.&lt;br /&gt;&lt;br /&gt;At this point I decided my only option was to reverse engineer the XLI Compression format, and began with simple guesses. I tried decompressing the data using Deflate, Zip, and RLE without any progress. I was able to determine that the first 8 bytes of the compressed data included a compressed length, some uncompressed data, and that each of the 12 to 16 leads were stored in a chunk with one of these headers:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;pre&gt;offset   2        4        6        8  ...&lt;br /&gt;+--------+--------+--------+--------+--------+--------+--------+&lt;br /&gt;| Size            |  Unk.  | Delta? | Compressed data...       |&lt;br /&gt;+--------+--------+--------+--------+                          |&lt;br /&gt;| ...                                             [Size bytes] |&lt;br /&gt;+--------+--------+--------+--------+--------+--------+--------+&lt;br /&gt;| Next lead chunk ...                                          |&lt;/pre&gt;&lt;/blockquote&gt;Once the simple guesses were ruled out, I began exploring the behavior of the reference implementation provided for the Sierra ECG format. While exploring with &lt;a href="http://www.ollydbg.de/"&gt;OllyDbg&lt;/a&gt;, certain code tells made me believe the decompression algorithm read 10-bits at a time:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;pre&gt;SHR   EAX, 16h   ; reduce EAX to the 10-bit code word&lt;br /&gt;SHL   ECX, Ah    ; prepare to read 10 more bits from the input&lt;/pre&gt;&lt;/blockquote&gt;The compressed data also did not appear to contain a dictionary referenced by the code. At this point I considered I was looking at a form of &lt;a href="http://en.wikipedia.org/wiki/Lempel%E2%80%93Ziv%E2%80%93Welch" target="_blank"&gt;Lempel-Ziv-Welch&lt;/a&gt;, or LZW, compression. LZW is a popular, lossless compression scheme which creates its compression dictionary on the fly. It is used by the &lt;a href="http://en.wikipedia.org/wiki/Graphics_Interchange_Format" target="_blank"&gt;GIF&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Tagged_Image_File_Format#Part_2:_TIFF_Extensions" target="_blank"&gt;TIFF&lt;/a&gt; image formats, and was the subject of controversy when it was first introduced into the GIF format due to patent licensing requirements.&lt;br /&gt;&lt;br /&gt;In my quest to quickly reach a conclusion I found an &lt;a href="http://marknelson.us/1989/10/01/lzw-data-compression/" target="_blank"&gt;excellent LZW implementation from Mark Nelson in C&lt;/a&gt; and found it successfully decompressed the data. In fact, the structure of the C code was so familiar, I realized &lt;i&gt;the reference implementation from Philips used the exact same code!&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;If you've reached this step while following along at home, you'll notice the decompressed data seems front-loaded with 0's. This is a case of intelligently streaming the data to the compression algorithm to take advantage of data duplication.&lt;br /&gt;&lt;br /&gt;The uncompressed data represents 16-bit delta codes, of which the majority include 0x00 or 0xFF in their most significant byte (MSB). This is because they are either small and positive or small and negative, and as ECG data is rhythmic the delta codes are likely to retain the same sign for numerous samples.&lt;br /&gt;&lt;br /&gt;To take advantage of this fact during compression, the delta codes are first deinterleaved into two halves. The first half includes each MSB and the second half includes each LSB. The pseudo-code for interleaving the decompressed data looks like the following:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;pre&gt;# input contains the decompressed data&lt;br /&gt;# output will contain the interleaved 16-bit delta codes&lt;br /&gt;fun unpack( input[], output[], nSamples )&lt;br /&gt;    for i &amp;lt;- 1..nSamples&lt;br /&gt;        output[i] &amp;lt;- (input[i] &amp;lt;&amp;lt; 8) | input[nSamples + i]&lt;br /&gt;    endfor&lt;br /&gt;endfun&lt;/pre&gt;&lt;/blockquote&gt;At this point the delta compression scheme will need to be decoded to produce the actual signal data for each of the leads. The delta compression scheme is a simple recurrence relation (a second order difference relation) using the prior two delta codes:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;pre&gt;# output contains the 16-bit delta codes&lt;br /&gt;# first is the 16-bit delta code from the chunk header&lt;br /&gt;fun deltaDecompression( output[], nSamples, first )&lt;br /&gt;    x &amp;lt;- output[1]&lt;br /&gt;    y &amp;lt;- output[2]&lt;br /&gt;    prev &amp;lt;- first&lt;br /&gt;    for i &amp;lt;- 3..nSamples&lt;br /&gt;        z &amp;lt;- (2 * y) - x - prev&lt;br /&gt;        prev &amp;lt;- output[i] - 64   # is -64 to 64 the range?&lt;br /&gt;        output[i] &amp;lt;- z&lt;br /&gt;        x &amp;lt;- y&lt;br /&gt;        y &amp;lt;- z&lt;br /&gt;    endfor&lt;br /&gt;endfun&lt;/pre&gt;&lt;/blockquote&gt;Now that you have the actual, per signal data all you need to do is recreate leads III, aVR, aVL, and aVF. This is done using the data from leads I and II as on most ECG machines. I've omitted the actual formulas for brevity.&lt;br /&gt;&lt;br /&gt;Using &lt;a id="end" name="end" href="http://code.google.com/p/sierra-ecg-tools/wiki/XliCompressionScheme"&gt;my reference implementation of the decompression algorithm&lt;/a&gt; I was able to feed the original acquired 12-Lead to the &lt;a href="http://openmedical.sed.hu/en/szoftverek/konverterek/3" target="_blank"&gt;Philips ECG to SVG converter&lt;/a&gt;, with the following results:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-m-gWufEnaqA/Tvki_7nve8I/AAAAAAAABzM/ONDlVoJNc8w/s1600/jv5wL.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="302" src="http://2.bp.blogspot.com/-m-gWufEnaqA/Tvki_7nve8I/AAAAAAAABzM/ONDlVoJNc8w/s400/jv5wL.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;If you'd like to start playing with my code I welcome you to join my &lt;a href="http://code.google.com/p/sierra-ecg-tools/"&gt;Google Code Project: Sierra ECG Tools&lt;/a&gt;. I am also working on a C implementation, and likely an Android implementation. Stay tuned, and apologies for the technical post.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;The author has no financial ties to Philips Healthcare and received no compensation for this work.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-3814676283950811227?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/3814676283950811227/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=3814676283950811227' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/3814676283950811227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/3814676283950811227'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2011/12/philips-healthcares-sierra-ecg-format.html' title='Philips Healthcare&apos;s Sierra ECG format XLI Compression Scheme'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-m-gWufEnaqA/Tvki_7nve8I/AAAAAAAABzM/ONDlVoJNc8w/s72-c/jv5wL.png' height='72' width='72'/><thr:total>1</thr:total><georss:featurename>Wilmington, NC, USA</georss:featurename><georss:point>34.2257255 -77.9447102</georss:point><georss:box>34.120694500000006 -78.1026387 34.3307565 -77.7867817</georss:box></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-7818205415033559674</id><published>2011-12-06T16:20:00.001-05:00</published><updated>2011-12-06T18:03:11.711-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EKG Myth'/><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>EKG Myth - Ventricular tachycardia must have concordance</title><content type='html'>&lt;i&gt;&lt;a href="http://sixlettervariable.blogspot.com/search/label/EKG%20Myth"&gt;This is part of a series of posts detailing common electrocardiogram myths.&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Myth&lt;/b&gt;: Ventricular Tachycardia&amp;nbsp;must have precordial concordance&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When differentiating a regular, wide-complex tachycardia some will look for precordial concordance to rule-in, or more importantly to rule-out ventricular tachycardia.&lt;br /&gt;&lt;br /&gt;The absence of precordial concordance is not a reliable method of ruling out ventricular tachycardia:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;Although the specificity of concordance for VT is high (&amp;gt;90%), the sensitivity is low (~20%)&lt;sup&gt;1&lt;/sup&gt;.&lt;/blockquote&gt;It is generally thought that positive concordance indicates a posteriobasal left ventricular origin and negative concordance indicates an anterioapical left ventricular origin.&amp;nbsp;However, in the case of positive concordance, SVT with a left-posterior accessory pathway is a known cause.&lt;br /&gt;&lt;br /&gt;Until recently, negative concordance has been thought to be "virtually diagnostic" of ventricular tachycardia&lt;sup&gt;2&lt;/sup&gt;. Multiple case reports have shown that certain configurations of accessory pathways can also cause negative concordance&lt;sup&gt;3,4,5&lt;/sup&gt;.&lt;br /&gt;&lt;br /&gt;The key takeaway is while this criteria is a useful tool to rule-in ventricular tachycardia (i.e.&amp;nbsp;&lt;i&gt;high&amp;nbsp;specificity&lt;/i&gt;), it is not a useful tool to rule-out ventricular tachycardia (i.e.&amp;nbsp;&lt;i&gt;low sensitivity&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-bl7dI3jJGSg/Tt6WaxXjGcI/AAAAAAAABy4/ZRJY2q8tRy4/s1600/WCT+-+VT+-+Concordance.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="272" src="http://1.bp.blogspot.com/-bl7dI3jJGSg/Tt6WaxXjGcI/AAAAAAAABy4/ZRJY2q8tRy4/s400/WCT+-+VT+-+Concordance.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Ventricular tachycardia without precordial concordance&lt;sup&gt;6&lt;/sup&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://ems12lead.com/2011/11/90-year-old-female-cc-seizur/" imageanchor="1" style="margin-left: auto; margin-right: auto;" target="_blank"&gt;&lt;img border="0" height="160" src="http://ems12lead.com/files/2011/11/90yo-F-Seizure-Initial-12-Lead1.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Ventricular tachycardia without precordial concordance. (c) 2011 EMS 12-Lead Blog.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-zLSGswyeRXA/Tt6XvI_jExI/AAAAAAAABzA/koj4Lmy7CJw/s1600/WCT+-+AFlutter+-+Concordance.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="182" src="http://1.bp.blogspot.com/-zLSGswyeRXA/Tt6XvI_jExI/AAAAAAAABzA/koj4Lmy7CJw/s400/WCT+-+AFlutter+-+Concordance.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;WPW and Atrial flutter with positive concordance&lt;sup&gt;7&lt;/sup&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;While positive or negative concordance may strongly suggest ventricular tachycardia, providers should not rule-out ventricular tachycardia in its absence.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Pellegrini CN, Scheinman MM. Clinical management of ventricular tachycardia. &lt;i&gt;Curr Probl Cardiol&lt;/i&gt;. 2010; 35(9):453-504. [&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/20887902" target="_blank"&gt;PubMed&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Goldberger ZD, Rho RW, Page RL. Approach to the Diagnosis and Initial Management of the Stable Adult Patient With a Wide Complex Tachycardia. &lt;i&gt;Am J Cardiol&lt;/i&gt;. 2008; 101:1456-1466. [&lt;a href="http://www.sciencedirect.com/science/article/pii/S000291490800163X" target="_blank"&gt;Full Text&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Pappas LK, et al. Wide QRS complex supraventricular tachycardia with negative precordial concordance. &lt;i&gt;Am Heart Hosp J&lt;/i&gt;. 2009; 7(1):67-8. [&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/19742439" target="_blank"&gt;PubMed&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Kappos KG, et al. Wide QRS Complex tachycardia with a negative concordance pattern in the precordial leads: Are the ECG criteria always reliable? &lt;i&gt;Pacing Clin Electrophys&lt;/i&gt;. 2006; 29:63-6. [&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/16441720" target="_blank"&gt;PubMed&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Volders PGA, et al. Wide QRS complex tachycardia with negative precordial concordance: Always a ventricular origin? &lt;i&gt;J Cardio Electro.&lt;/i&gt;&amp;nbsp;2003; 14:109-111. [&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/12625622" target="_blank"&gt;PubMed&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Garmel GM. Wide Complex Tachycardias: Understanding this Complex Condition Part 1 - Epidemiology and Electrophysiology. &lt;i&gt;W J Emerg Med&lt;/i&gt;. 2008; 9(1):28-39. [&lt;a href="http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2672229/" target="_blank"&gt;Full Text&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Ibid. 1, Figure 3.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-7818205415033559674?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/7818205415033559674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=7818205415033559674' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/7818205415033559674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/7818205415033559674'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2011/12/ekg-myth-ventricular-tachycardia-must.html' title='EKG Myth - Ventricular tachycardia must have concordance'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-bl7dI3jJGSg/Tt6WaxXjGcI/AAAAAAAABy4/ZRJY2q8tRy4/s72-c/WCT+-+VT+-+Concordance.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-3409431740313429100</id><published>2011-11-17T06:56:00.001-05:00</published><updated>2011-12-09T13:08:14.448-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EKG Myth'/><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>EKG Myth - "It's Too Fast for Ventricular Tachycardia"</title><content type='html'>&lt;i&gt;&lt;a href="http://sixlettervariable.blogspot.com/search/label/EKG%20Myth"&gt;This is part of a series of posts detailing common electrocardiogram myths.&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Myth&lt;/b&gt;: Rate can help you rule out Ventricular Tachycardia&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When differentiating a regular, wide-complex tachycardia some will look at the rate to rule out ventricular tachycardia. Studies have not found rate to be a predictive finding&lt;sup&gt;1&lt;/sup&gt;.&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;blockquote class="tr_bq"&gt;...regarding ventricular rate, significant overlap unfortunately exists between VT and SVT such that rate is not a helpful criterion to differentiate origins&lt;sup&gt;2&lt;/sup&gt;.&lt;/blockquote&gt;&lt;/blockquote&gt;Ventricular tachycardia technically can range in rates from 100 bpm through 300 bpm.&amp;nbsp;However, a practical definition of VT would place the lower bound around 120 bpm and the upper bound around 260 bpm&lt;sup&gt;3&lt;/sup&gt;.&lt;br /&gt;&lt;br /&gt;Common terminology includes rates slower than 120 as "Slow Ventricular Tachycardia", which most often is not true VT&lt;sup&gt;4&lt;/sup&gt;. Rates upwards of 260 to 300 bpm are commonly termed "Ventricular Flutter"&lt;sup&gt;5&lt;/sup&gt;.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://ecg.bidmc.harvard.edu/maven/dispcase.asp?rownum=342&amp;amp;caseid=343" imageanchor="1" style="margin-left: auto; margin-right: auto;" target="_blank"&gt;&lt;img border="0" height="202" src="http://ecg.bidmc.harvard.edu/mavendata/images/case343/1350x900.gif" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Ventricular tachycardia at 130 bpm. (c) 2001 - 2011 Beth Israel Deaconess Medical Center.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://ems12lead.com/2011/11/90-year-old-female-cc-seizur/" imageanchor="1" style="margin-left: auto; margin-right: auto;" target="_blank"&gt;&lt;img border="0" height="161" src="http://ems12lead.com/files/2011/11/90yo-F-Seizure-Initial-12-Lead1.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Ventricular tachycardia at 206 bpm. (c) 2011 EMS 12-Lead Blog.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://emedicine.medscape.com/article/159075-overview" imageanchor="1" style="margin-left: auto; margin-right: auto;" target="_blank"&gt;&lt;img border="0" height="182" src="http://img.medscape.com/pi/emed/ckb/cardiology/150072-159075-162.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Ventricular tachycardia at 280 bpm. (c) 1994-2011 WebMD.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;As a rule: a regular, wide-complex tachycardia should be treated as ventricular tachycardia in the field, until proven otherwise.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Griffith MJ, et al. Multivariate analysis to simplify the differential diagnosis of broad complex tachycardia. Br Heart J (1991); 66:166-74. [&lt;a href="http://www.ncbi.nlm.nih.gov/pmc/articles/PMC1024611/" target="_blank"&gt;PubMed&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Hudson KB, et al. Electrocardiographic Manifestations: Ventricular Tachycardia. J Emerg Med (2003); 25:303-314. [&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/14585460" target="_blank"&gt;PubMed&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Surawicz B, Knilans TK. Chou's Electrocardiography in Clinical Practice: Adult and Pediatric, 6th ed. Philadelphia, PA. Saunders, 2008.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Mattu A. ECG PEARLS: Beware the Slow Mimics of Ventricular Tachycardia. Emergency Physicians Monthly, 24 August 2010. Retrieved Online 8 November 2011. [&lt;a href="http://www.epmonthly.com/clinical-skills/ekg/ecg-pearls-beware-the-slow-mimics-of-ventricular-tachycardia/" target="_blank"&gt;Free Full Text&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Gurevitz O, et al. Long-term prognosis of inducible ventricular flutter: not an innocent finding. Am Heart J (2004); 147(4):649-54. [&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/15077080" target="_blank"&gt;PubMed&lt;/a&gt;]&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-3409431740313429100?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/3409431740313429100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=3409431740313429100' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/3409431740313429100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/3409431740313429100'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2011/11/ekg-myth-1-its-too-fast-for-ventricular.html' title='EKG Myth - &quot;It&apos;s Too Fast for Ventricular Tachycardia&quot;'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-2307646765671845921</id><published>2011-06-22T19:31:00.000-04:00</published><updated>2011-06-22T19:31:52.034-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Zebra Spotting</title><content type='html'>I'm sure we all received the following good advice at some point in our EMS education or careers:&lt;br /&gt;&lt;blockquote&gt;"When you hear hoofbeats, think horses not zebras."&lt;/blockquote&gt;I propose we add the corollary:&lt;br /&gt;&lt;blockquote&gt;"...but if you don't stay to watch, you won't know what you missed."&lt;/blockquote&gt;&lt;a href="http://www.washingtontimes.com/news/2011/jun/8/dcs-ig-faults-paramedic-response-2008-acid-reflux-/"&gt;Remember, always err on the side of the patient.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-2307646765671845921?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/2307646765671845921/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=2307646765671845921' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/2307646765671845921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/2307646765671845921'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2011/06/zebra-spotting.html' title='Zebra Spotting'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-8503355036434944382</id><published>2011-05-23T09:36:00.001-04:00</published><updated>2011-05-23T09:37:29.690-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Video Education'/><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>An attempt at Video Education: Axis Determination</title><content type='html'>&lt;p&gt;I'm a huge fan of the &lt;a href="http://www.kahnacademy.org"&gt;Kahn Academy&lt;/a&gt; and regularly watch his videos when I have a question about something in mathematics. Usually it only takes five or so minutes into the video for me to recall how to accomplish the task, and I can move along. I've always wanted to see if I could do the same thing for ECG interpretation.&lt;/p&gt;&lt;p&gt;So here is my inaugural attempt; rapid axis determination using leads I and aVF (assuming you're ok with a ±5° difference):&lt;/p&gt;&lt;p&gt;&lt;object style="height: 390px; width: 640px;"&gt;&lt;param name="movie" value="http://www.youtube.com/v/kOdk20FgcC0?version=3" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed allowfullscreen="true" allowscriptaccess="always" height="390" src="http://www.youtube.com/v/kOdk20FgcC0?version=3" type="application/x-shockwave-flash" width="640"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-8503355036434944382?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/8503355036434944382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=8503355036434944382' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/8503355036434944382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/8503355036434944382'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2011/05/attempt-at-video-education-axis.html' title='An attempt at Video Education: Axis Determination'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-510835974457220198</id><published>2011-04-06T11:29:00.001-04:00</published><updated>2011-04-06T11:29:13.587-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Conclusion to 54 year old female CC: BLS intercept</title><content type='html'>&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;As many readers noted, there is a lot of baseline wander. This is not the most helpful of 12-Leads. On scene the crew attempted multiple 12-Leads, however, the patient would not sit still and that was the best one.&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I think a close look at the Initial 12-Lead has enough information to make a field diagnosis.&lt;/span&gt;&lt;/blockquote&gt;&lt;div style="background-attachment: initial; background-clip: initial; background-color: transparent; background-image: initial; background-origin: initial; border-bottom-width: 0px; border-color: initial; border-left-width: 0px; border-right-width: 0px; border-style: initial; border-top-width: 0px; margin-bottom: 18px; margin-left: 0px; margin-right: 0px; margin-top: 0px; outline-color: initial; outline-style: initial; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; vertical-align: baseline;"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&lt;a href="http://ems12lead.com/2011/04/06/54-year-old-female-cc-bls-intercept-conclusion/"&gt;Read the rest at EMS 12-Lead Blog: 54 year old female CC: BLS intercept - Conclusion&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-510835974457220198?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/510835974457220198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=510835974457220198' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/510835974457220198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/510835974457220198'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2011/04/conclusion-to-54-year-old-female-cc-bls.html' title='Conclusion to 54 year old female CC: BLS intercept'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-9140832047984341381</id><published>2011-04-05T12:51:00.000-04:00</published><updated>2011-04-05T12:51:54.790-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>New Case Study at EMS 12-Lead Blog</title><content type='html'>My first case study as an associate editor is up at &lt;a href="http://ems12lead.com/2011/04/04/54-year-old-female-cc-bls-intercept/"&gt;the EMS 12-Lead Blog, so check it out: 54 year old female cc: BLS Intercept&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #eeeeee; line-height: 18px;"&gt;"It is just after 3am when you are called to intercept a BLS unit on scene with a 54 year old female with a low heart rate.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: #eeeeee; line-height: 18px;"&gt;Upon your arrival, you find two EMT-Basics attending to a small woman lying in bed, who appears acutely ill..."&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;Also, I've done &lt;a href="http://ems12lead.com/2011/04/05/second-degree-or-third-degree/"&gt;a brief review of atrioventricular blocks&lt;/a&gt; to help with identification of the rhythm in this case study!&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-9140832047984341381?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/9140832047984341381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=9140832047984341381' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/9140832047984341381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/9140832047984341381'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2011/04/new-case-study-at-ems-12-lead-blog.html' title='New Case Study at EMS 12-Lead Blog'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-7431975273753709804</id><published>2011-03-10T18:54:00.001-05:00</published><updated>2011-03-10T19:00:12.814-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Unrecognized Limb Lead Misplacement?</title><content type='html'>Dr. Smith's ECG Blog has a new case up, "&lt;a href="http://hqmeded-ecg.blogspot.com/2011/03/reperfusion-through-collaterals.html"&gt;Reperfusion through collaterals associated with nitroglycerin, lateral MI with reciprocal T-wave inversion in lead III&lt;/a&gt;," with a pretty stark change in the initial 12-Leads. However, I have a hunch the stark change was really a change in the limb lead positions!&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-zC0j6QTm_N4/TXlgBNV6mfI/AAAAAAAABvY/4qbRmJrxNuY/s1600/ecg-la-ll-reversal.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="160" src="https://lh4.googleusercontent.com/-zC0j6QTm_N4/TXlgBNV6mfI/AAAAAAAABvY/4qbRmJrxNuY/s400/ecg-la-ll-reversal.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;b&gt;ECG 1 and ECG 2: Limb Leads Only&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Look at leads I and II, notice how they "swap" positions between the two 12-Leads. Now look at aVL and aVF, notice how the "swap" positions too. Now take a look at lead III. It goes from inverted P's and T's with a Qr complex, to upright P's and T's with a Rs complex.&lt;br /&gt;&lt;br /&gt;I propose that this change is due to a simple reversal of two leads.&amp;nbsp;If we take a look at our friend Einthoven's Triangle (&lt;a href="http://sixlettervariable.blogspot.com/2011/02/highlighting-atrial-activity-on-ecg-s5.html"&gt;we covered this in a previous post on the S5 Lead&lt;/a&gt;) we can see that this makes sense!&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-9O6oQ8w9CAU/TXliikbVOLI/AAAAAAAABvc/nIGGb-MnHXk/s1600/Einhovens+Triangle+-+LA-LL+Swap.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="https://lh5.googleusercontent.com/-9O6oQ8w9CAU/TXliikbVOLI/AAAAAAAABvc/nIGGb-MnHXk/s1600/Einhovens+Triangle+-+LA-LL+Swap.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;b&gt;LA/LL Swap: Einthoven's Triangle is "Flipped"&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;We can see that Lead I is actually looking at Lead II and Lead II is actually looking at Lead I; confirmed with ECG's 1 and 2. Lead III becomes an inverted Lead III; confirmed again in the original ECG's.&amp;nbsp;&lt;b&gt;This looks like a case of an unrecognized left arm and left leg lead reversal.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;What I find most interesting is if you compare every ECG except the first, it appears to be a case with subtle posteriolateral changes that may have been missed had there not been the lead reversal!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-7431975273753709804?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/7431975273753709804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=7431975273753709804' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/7431975273753709804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/7431975273753709804'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2011/03/unrecognized-limb-lead-misplacement.html' title='Unrecognized Limb Lead Misplacement?'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-zC0j6QTm_N4/TXlgBNV6mfI/AAAAAAAABvY/4qbRmJrxNuY/s72-c/ecg-la-ll-reversal.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-4301053431434592762</id><published>2011-02-28T19:06:00.001-05:00</published><updated>2011-11-22T02:21:32.542-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Highlighting Atrial Activity on an ECG: The S5 Lead</title><content type='html'>Kelly Grayson, of &lt;a href="http://ambulancedriverfiles.com/"&gt;A Day in the Life of an Ambulance Driver&lt;/a&gt; fame, posted &lt;a href="http://www.ems1.com/ems-products/technology/articles/746439-The-Leads-Less-Traveled/"&gt;an article on EMS1.com over a year ago entitled The Leads Less Traveled&lt;/a&gt;. In this he touched on modified chest leads (MCL1 through MCL6), right precordial leads (V4R), and the S5 Lead.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Update: after posting this I have since learned it is also known as the &lt;b&gt;Lewis Lead&lt;/b&gt;, after Sir Thomas Lewis&lt;sup&gt;1&lt;/sup&gt;, and have included a link to an article detailing how it was derived.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;I had never heard of the &lt;b&gt;S5 Lead&lt;/b&gt; before and promptly forgot about it until yesterday, when I finished acquiring 12-Leads for my limb lead reversal project. I went ahead and captured a rhythm strip from myself using the S5 lead placement.&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-WbEAjkGrYrY/TWw4X-3F7ZI/AAAAAAAABvU/qBN-N0XL8SA/s1600/s5-atrial-leads.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="92" src="https://lh5.googleusercontent.com/-WbEAjkGrYrY/TWw4X-3F7ZI/AAAAAAAABvU/qBN-N0XL8SA/s400/s5-atrial-leads.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;b&gt;S5 Leads: monitoring Leads I and II.&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Before we cover the S5 Leads, let's recap normal lead placement and our friend, Einthoven's Triangle. This produces convenient ECGs with positive waveforms along the usual mean vector of the heart. Lead I points to 0°, Lead II points to 60°, and Lead III points to 120°.&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-p-igMwnR-3E/TWwxcYOBJQI/AAAAAAAABu8/S-Kmrc1dLQM/s1600/normal-vectors.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="https://lh3.googleusercontent.com/-p-igMwnR-3E/TWwxcYOBJQI/AAAAAAAABu8/S-Kmrc1dLQM/s1600/normal-vectors.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;b&gt;Our friend, Einthoven's Triangle.&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Additionally, the electrodes themselves are placed out on the limbs which generally results in waveforms proportional to the myocardium involved. Atrial activity is shown as well, but considering the proportion of myocardium involved in atrial depolarization, this configuration is not always useful in finding P-waves.&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-tHO_12NNdRU/TWwzcFC59hI/AAAAAAAABvE/7-_Ut2k2yg0/s1600/normal-lead-I-II.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="https://lh6.googleusercontent.com/-tHO_12NNdRU/TWwzcFC59hI/AAAAAAAABvE/7-_Ut2k2yg0/s1600/normal-lead-I-II.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;b&gt;Normal Placement: Leads I and II from the same patient.&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Now let's introduce the &lt;b&gt;S5 Lead&lt;/b&gt;. You can produce this using many variations of the electrodes, however, for simplicity's sake we will stick with Kelly's description:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Place the &lt;i style="font-weight: bold;"&gt;Right Arm &lt;/i&gt;electrode on the patient's &lt;u&gt;manubrium&lt;/u&gt;.&lt;/li&gt;&lt;li&gt;Place the &lt;i style="font-weight: bold;"&gt;Left Arm&lt;/i&gt;&amp;nbsp;electrode on the &lt;u&gt;5th intercostal space,&amp;nbsp;right sternal border&lt;/u&gt;.&lt;/li&gt;&lt;li&gt;Place the &lt;i style="font-weight: bold;"&gt;Left Leg&lt;/i&gt;&amp;nbsp;electrode on the &lt;u&gt;right lower costal margin&lt;/u&gt;.&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;Monitor Lead I&lt;/i&gt;&lt;/b&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-fviLOFKMsEo/TWwywF_3joI/AAAAAAAABvA/0hiIz5Wwbjo/s1600/s5-vectors.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" src="https://lh4.googleusercontent.com/-fviLOFKMsEo/TWwywF_3joI/AAAAAAAABvA/0hiIz5Wwbjo/s1600/s5-vectors.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;b&gt;Maximal atrial activity monitoring Lead I, S5 Lead configuration.&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;Notice the change in the direction of each lead. Lead I now points to the usual mean vector of atrial depolarization. Lead II and lead III are nearly perpendicular to the usual mean vector of ventricular depolarization. What does this mean for the electrocardiographer? If you remember that a vector which travels towards a lead is positive and perpendicular to a lead is isoelectric the answer is easy: &lt;b&gt;atrial activity is highlighted&lt;/b&gt;, ventricular activity is diminished.&amp;nbsp;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-pjbZsPu_IDo/TWw1VkTMrYI/AAAAAAAABvI/3jtOFVRJHoU/s1600/s5-atrial-lead-i.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="85" src="https://lh3.googleusercontent.com/-pjbZsPu_IDo/TWw1VkTMrYI/AAAAAAAABvI/3jtOFVRJHoU/s320/s5-atrial-lead-i.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;b&gt;S5: Lead I&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://lh3.googleusercontent.com/-iuQ0520hP3k/TWw1gBhmBZI/AAAAAAAABvM/GSU6hWgAj8Y/s1600/s5-atrial-leads-ii.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="85" src="https://lh3.googleusercontent.com/-iuQ0520hP3k/TWw1gBhmBZI/AAAAAAAABvM/GSU6hWgAj8Y/s320/s5-atrial-leads-ii.jpg" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;b&gt;S5: Lead II&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;The new direction Lead I points in is not quite perpendicular to the mean vector and it is also closer to the ventricular depolarization, hence we still have clear ventricular activity. However, the direction and location of Lead I is right in front of the atrial depolarization wavefront, giving clear P-waves. Lead II shows a large P-wave and small, nearly isoelectric ventricular activity.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;If I can remember, I will try and acquire S5 Leads in the field. Has anyone else used the S5 Lead? Are there any other interesting lead configurations we should use?&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Bakker, ALM, et al. The Lewis Lead: Making Recognition of P Waves Easy During Wide QRS Complex Tachycardia. Circ (2009); 119:e592-e593. [&lt;a href="http://circ.ahajournals.org/content/119/24/e592.full" target="_blank"&gt;Free Full Text&lt;/a&gt;]&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-4301053431434592762?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/4301053431434592762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=4301053431434592762' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4301053431434592762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4301053431434592762'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2011/02/highlighting-atrial-activity-on-ecg-s5.html' title='Highlighting Atrial Activity on an ECG: The S5 Lead'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/-WbEAjkGrYrY/TWw4X-3F7ZI/AAAAAAAABvU/qBN-N0XL8SA/s72-c/s5-atrial-leads.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-6898489492797644278</id><published>2011-02-14T14:46:00.000-05:00</published><updated>2011-02-14T14:46:07.419-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Limb Lead Reversal: Preliminary Findings</title><content type='html'>Back in January, &lt;a href="http://ems12lead.com/2011/01/22/the-bait-and-switch/"&gt;Tom over at the EMS 12-Lead blog had an interesting case entitled "Bait and Switch"&lt;/a&gt; in which the diagnosis of a STEMI was potentially masked due to incorrect limb lead placement. Interestingly, the limb lead placement was not one of classic LA/RA reversal, but rather a "rotation" of the limb leads. In this instance, the cardiac monitor did not detect the incorrect limb lead positioning. Over the last few weeks I have set out to collect 12-Lead ECGs acquired from each of the 24 possible limb lead positions and to catalog the characteristics of each.&lt;br /&gt;&lt;br /&gt;All of the ECGs I have acquired are on LifePak 12 monitors using the GE Marquette 12SL algorithm. Currently, only classic limb lead reversal has produced the, "*** Suspect arm lead reversal, interpretation assumes no reversal," message. However, I still have 12 combinations of lead placements to complete.&lt;br /&gt;&lt;br /&gt;Here are 3 ECG's acquired from a healthy male subject without any known cardiac abnormality or history (i.e. me).&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-fAp45oItz78/TVmEXfAP-RI/AAAAAAAABuc/uuBKgnAsWto/s1600/limb-leads-1248.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="310" src="http://4.bp.blogspot.com/-fAp45oItz78/TVmEXfAP-RI/AAAAAAAABuc/uuBKgnAsWto/s400/limb-leads-1248.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Normal ECG **Unconfirmed**; Normal Sinus Rhythm&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-PsBBIC9XvNk/TVmEeFydhXI/AAAAAAAABug/T-2Fn7qgf_A/s1600/limb-leads-2148.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="311" src="http://3.bp.blogspot.com/-PsBBIC9XvNk/TVmEeFydhXI/AAAAAAAABug/T-2Fn7qgf_A/s400/limb-leads-2148.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Abnormal ECG **Unconfirmed**; *** Suspect arm lead reversal, interpretation assumes no reversal; Normal sinus rhythm; Right axis deviation; Nonspecific ST abnormality.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-RpXxRqQxpv0/TVmEkl2n24I/AAAAAAAABuk/UfIxNTiaTAg/s1600/limb-leads-8142.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="310" src="http://3.bp.blogspot.com/-RpXxRqQxpv0/TVmEkl2n24I/AAAAAAAABuk/UfIxNTiaTAg/s400/limb-leads-8142.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Abnormal ECG **Unconfirmed**; Unusual P-axis, possible ectopic atrial rhythm; Left axis deviation; ST &amp;amp; T wave abnormality, consider inferior ischemia&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-6898489492797644278?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/6898489492797644278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=6898489492797644278' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/6898489492797644278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/6898489492797644278'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2011/02/limb-lead-reversal-preliminary-findings.html' title='Limb Lead Reversal: Preliminary Findings'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-fAp45oItz78/TVmEXfAP-RI/AAAAAAAABuc/uuBKgnAsWto/s72-c/limb-leads-1248.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-1403005028647455096</id><published>2010-12-21T10:52:00.001-05:00</published><updated>2010-12-21T10:56:17.905-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Harvard's ECG Wave Maven</title><content type='html'>I am constantly searching for resources which let me hone my electrocardiography skills and would like to share a gem I discovered a few months ago. Harvard's School of Medicine and the Beth Israel Deaconess Medical Center has an excellent resource:&lt;a href="http://ecg.bidmc.harvard.edu/maven/mavenmain.asp"&gt;&amp;nbsp;ECG Wave Maven: Self-Assessment Program for Students and Clinicians&lt;/a&gt;. You can browse their cases as a quiz or for reference, and each case includes high resolution ECGs for your inspection.&lt;br /&gt;&lt;br /&gt;I've found their difficulty ratings to be pretty accurate, and I've found that Level 3 or less (of 5 difficulty levels) are all ECG findings that Paramedics should be able to recognize.&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://ecg.bidmc.harvard.edu/mavendata/images/case164/800x400.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="200" src="http://ecg.bidmc.harvard.edu/mavendata/images/case164/800x400.gif" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-family: arial; font-size: 11px; line-height: 13px;"&gt;Nathanson L A, McClennen S, Safran C, Goldberger AL. ECG Wave-Maven: Self-Assessment Program for Students and Clinicians. &lt;a href="http://ecg.bidmc.harvard.edu/"&gt;http://ecg.bidmc.harvard.edu&lt;/a&gt;.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;I encourage all of you to go spend&amp;nbsp;a few &lt;s&gt;hours&lt;/s&gt;days at the site brushing up on your ECG interpretation skills, your patients deserve it!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-1403005028647455096?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/1403005028647455096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=1403005028647455096' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/1403005028647455096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/1403005028647455096'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2010/12/harvards-ecg-wave-maven.html' title='Harvard&apos;s ECG Wave Maven'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-7533262706787974693</id><published>2010-12-20T17:08:00.000-05:00</published><updated>2010-12-20T17:08:50.116-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>A quick look at Pulmonary Embolisms</title><content type='html'>Acute pulmonary embolism (PE) is believed to affect anywhere from 1 in 250 to 1 in 1000 persons in the US each year. Potentially 1 in 10 patients with an acute pulmonary embolism may go into cardiac arrest within the first 60 minutes[1].&lt;br /&gt;&lt;br /&gt;The working diagnosis of a PE in the field is likely to be based solely on clinical findings. Therefore, prehospital providers should be familiar with the most common physical findings:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Tachycardia&lt;/li&gt;&lt;li&gt;Tachypnea&lt;/li&gt;&lt;li&gt;Dyspnea&lt;/li&gt;&lt;li&gt;Persistently low SaO2&lt;/li&gt;&lt;li&gt;Recent history of syncope&lt;/li&gt;&lt;li&gt;Hypotension&lt;/li&gt;&lt;li&gt;Cyanosis or pallor &lt;/li&gt;&lt;li&gt;Diaphoresis&lt;/li&gt;&lt;li&gt;Hemoptysis&lt;/li&gt;&lt;li&gt;Low grade fever&lt;/li&gt;&lt;li&gt;Diminished lung sounds&lt;/li&gt;&lt;/ol&gt;Additionally, prehospital providers should be familiar with the common ECG findings in acute pulmonary embolisms (in order of prevalence):&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Sinus tachycardia (73%)&lt;/li&gt;&lt;li&gt;Prominent S1 (73%) &lt;/li&gt;&lt;li&gt;"Clock-wise" rotation (56%) &lt;/li&gt;&lt;li&gt;Negative T in 2+ precordials (50%)&lt;/li&gt;&lt;li&gt;Incomplete or complete RBBB (20-68%)&lt;/li&gt;&lt;li&gt;P-pulmonale (28-33%)&lt;/li&gt;&lt;li&gt;Axis shift, generally RAD (23-30%)&lt;/li&gt;&lt;li&gt;&lt;b&gt;No significant findings (20-24%)&lt;/b&gt;&lt;/li&gt;&lt;li&gt;S1Q3T3 (12-25%)&lt;/li&gt;&lt;li&gt;Supraventricular arrhythmias (12%)&lt;/li&gt;&lt;/ol&gt;Note that 1 in 5 patients are likely to have no significant ECG findings. What this should stress is the field diagnosis of a PE will lean heavily on your clinical assessment and findings. &lt;b&gt;Chou&lt;/b&gt;[2] notes that in one study only 5 patients of 64 were diagnosed with a PE based on ECG findings.&lt;br /&gt;&lt;br /&gt;A combination of any of these physical and electrocardiographic findings strongly favor PE and prehospital providers should act accordingly. Unrecognized pulmonary embolisms may be rapidly fatal.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;References&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Galvagno SM. Emergency Pathophysiology: Clinical Applications for Prehospital Care. Teton New Media (2003). [&lt;a href="http://www.google.com/search?q=1591610079"&gt;ISBN 1591610079&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;Surawics B, Knilans TK, Chou TC. Chou's Electrocardiography in Clinical Practice: Adult and Pediatric. Saunders/Elsevier (2008), 6th ed. [&lt;a href="http://www.google.com/search?q=1416037748"&gt;ISBN 1416037748&lt;/a&gt;]&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-7533262706787974693?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/7533262706787974693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=7533262706787974693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/7533262706787974693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/7533262706787974693'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2010/12/quick-look-at-pulmonary-embolisms.html' title='A quick look at Pulmonary Embolisms'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-4202332206259476534</id><published>2010-12-03T13:49:00.000-05:00</published><updated>2010-12-03T13:49:25.375-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Pediatric Intranasal Fentanyl</title><content type='html'>&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Scenario&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;It's a summer afternoon and you're dispatched to a 9 year old male patient involved in an ATV accident. The nearest ALS engine company has been dispatched as well. Upon your arrival you find an ATV on its side, another ATV upright, and a crowd gathered on the porch of a nearby house. A paramedic from the engine is assessing a distraught young boy, sitting in his mother's lap, holding an obviously deformed right forearm. The officer on the engine informs you that the boy and his father were riding alongside the road, traveling at 20-30 miles per hour, when the boy lost control and was thrown from the ATV (his father insists he was wearing his helmet).&lt;br /&gt;&lt;br /&gt;You introduce yourself to the child, assuring him you're here to help, and ask him what happened. The boy states that when he fell he put his arms out and he heard a loud pop when his right hand hit the ground. He denies passing out or any other injuries but says his arm, "really hurts". He reluctantly allows you to assess his radial pulse in the affected arm, which is rapid but easily palpable.&amp;nbsp;There appears to be distal involvement of both the radius and ulna, however&amp;nbsp;he does not tolerate any further assessment of the arm and screams if there is any movement. The remainder of your physical exam reveals only minor abrasions to exposed skin. The engine company reports tachypnea, tachycardia, and a normal blood pressure.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Discussion&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;It appears the child has suffered a Colles' Fracture of the right distal forearm. Appropriate treatment would include splinting, ice packs, and pharmacologic pain control. However, given the current state of the patient, it may not be possible to splint the extremity due to anxiety and pain. Traditional prehospital pain management would require intravenous access or intramuscular administration. Both of these routes are likely to cause increased anxiety in this patient, which is best avoided.&lt;br /&gt;&lt;br /&gt;Pain management in the pre-hospital setting is fraught with problems. Most studies have found poor provider perception of pain, underutilization of analgesics, and a hesitance to treat pediatric pain (&lt;b&gt;Thomas&lt;/b&gt;; &lt;b&gt;Greenwald&lt;/b&gt;). Often&amp;nbsp;times, studies find that even if patients are provided analgesia, they do not feel their pain was managed adequately at all (&lt;b&gt;Thomas&lt;/b&gt;). For pediatric patients, this problem is compounded as pre-hospital providers are often wary to provide pain management or may be unable to obtain invasive IV access to provide pain management (&lt;b&gt;Greenwald&lt;/b&gt;). Moreover, pre-hospital providers are often placed in situations where access to patients is limited to provide pain-management, often times resulting in painful patient movements.&lt;br /&gt;&lt;br /&gt;The addition of a noninvasive means of pain management would be an invaluable aid to pre-hospital providers and would remove a potential barrier to care. In pediatric populations, the importance of noninvasive pain management procedures is easy to grasp, as this patient population is often unable to comprehend the benefits of initially painful procedures. Improvements in "time to analgesia" will likely lead to and have a direct, positive impact on patient care and satisfaction.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Efficacy and Safety of Intranasal Fentanyl&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;The efficacy and safety of intranasal fentanyl (INF) has been the focus of multiple studies, both in-hospital and pre-hospital. &lt;b&gt;Finn et al&lt;/b&gt; conducted an in-hospital randomized double-blind placebo controlled trial and found INF to have the same efficacy as oral morphine during procedural wound care in adult burn patients (n=26, 35.5 ± 12.4 years). The concentration of INF used in this study was 50 µg/mL, initial dosages of 1.48 ± 0.57 µg/kg, and no difference in the number of adverse events. &lt;b&gt;Finn et al&lt;/b&gt; concluded that while patients receiving INF were more satisfied with their level of pain relief (p = 0.009) that overall only half of the patients in the trial reported they were "satisfied" or "very satisfied".&lt;br /&gt;&lt;br /&gt;In a randomized, controlled, open-label study of pre-hospital INF versus IV morphine, &lt;b&gt;Rickard et al&lt;/b&gt; found no significant difference in efficacy or safety (n=258, 42.3 ± 13.7 years). This study differs from Finn et al in that there were a multitude of chief complaints treated due to an "all-comers" design. Moreover, the doses used of INF was significantly higher at 180 µg divided evenly between the nares with up to two repeat dosages of 60 µg. Patients in the INF group received pain medication earlier than in the IV morphine group, likely owing to the simpler route of administration. Adverse effects were noted to occur more frequently in the INF group (relative risk 2.09, 95% CI 0.92-4.78, p = 0.07), however, the &lt;b&gt;Rickard et al&lt;/b&gt; was not powered to adequately detect any statistical difference. One incidence of a significant adverse effect required a termination of the INF protocol, but it was unclear from the study if this was related to the treatment or the patient's condition. &lt;b&gt;Rickard et al&lt;/b&gt; concluded that given the safety and efficacy of INF, it is a valuable option in patients where intravenous access is "undesirable or impossible".&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Borland et al 2005&lt;/b&gt; and &lt;b&gt;Borland et al 2007&lt;/b&gt; were inpatient randomized double-blind crossover studies evaluating the efficacy and safety of INF versus oral or IV morphine, respectively, in pediatric patients. &lt;b&gt;Borland et al 2005&lt;/b&gt; studied INF in pediatric burn patients requiring daily dressing changes and found no significant difference in outcomes (n=24, median 4.5 IQR 1.8-9.0 years). The INF dosage was calculated against the bioavailability of the IN route (listed as 70%) with 1.4 µg/kg fentanyl equating to an IV dosage of 1 µg/kg. There were no incidents of significant adverse events, although this was likely due to the study size. However, sedation scores recorded found that INF patients recovered earlier than their oral morphine counterparts. Overall, &lt;b&gt;Borland et al 2005&lt;/b&gt; found INF to be safe and efficacious, but more importantly well tolerated by pediatric patients.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Borland et al 2007&lt;/b&gt; found INF to be comparable to intravenous morphine in pediatric patients presenting to the emergency department with acute long-bone fractures (n=67, 10.9 ± 2.4 years). The median total dose was 1.7 µg/kg fentanyl with repeat doses given PRN. The impetus of the study was to find alternative methods of analgesia to intravenous narcotics in the pediatric population. The study authors note that given the comparable efficacy, INF is invaluable as a means to decrease "time to analgesia" in the pediatric population with potential for pre-hospital adoption.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Mudd&lt;/b&gt; conducted a systematic review of the available literature for INF in the pediatric population and graded 12 studies with evidence qualities of four Level I/A, one II/A, two II/B, one III/A, and four at III/B. There was a wide variation in dosing of INF amongst the studies, with a common range of 1-2 µg/kg fentanyl. Differences in concentrations existed as well, owing to the fact that in the US fentanyl is commonly available at 50 µg/mL and is used IV/IM/IO/IN yet overseas it is often given IN with a more concentrated 100-150 µg/mL solution. No differences in significance in pain reduction were found between concentrations, only in the volume of medication delivered. While no studies found a significant difference in adverse effects, many studies had small sample sizes and no long-term studies have been completed on the action of fentanyl on the nasal mucosa. However, the evidence in the reviewed studies demonstrated three clear points: (1) that INF is as efficacious as IV/IM/PO morphine or IV fentanyl, (2) it has no difference in adverse effects, and (3) it decreases the time to analgesia administration and pain relief.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Intranasal Fentanyl Protocol&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Based on the research available and the existing &lt;a href="http://www.ncems.org/nccep.html"&gt;2009 NC EMS protocols&lt;/a&gt;, an appropriate pain management protocol for the administration of intranasal fentanyl is given below:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Adult patients with indications for narcotic analgesia for whom intravenous access is not feasible, not available, or at the discretion of the lead Paramedic, an initial dose of 50-75 µg fentanyl may be delivered intranasally. The total volume to be administered should be divided equally between the two nares (not to exceed 1mL per nare).&lt;br /&gt;&lt;ul&gt;&lt;li&gt;If intravenous access is not available, repeat with 25 µg fentanyl delivered intranasally every 20 minutes to a maximum total dose of 200 µg.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Pediatric patients with indications for narcotic analgesia an initial dose of 1-2 µg/kg fentanyl up to a total dose of 50 µg may be delivered intranasally. The total volume to be administered should be divided equally between the two nares (not to exceed 0.5mL per nare).&lt;br /&gt;&lt;ul&gt;&lt;li&gt;In order to decrease the anxiety of pediatric patients requiring analgesia and invasive procedures (such as intravenous access), it may be prudent to begin with intranasal fentanyl.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;References&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;M. Borland, I. Jacobs and I. Rogers, Options in prehospital analgesia, &lt;i&gt;Emerg Med&lt;/i&gt; (Freemantle) &lt;b&gt;14 &lt;/b&gt;(2002), pp. 77–84.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;M. Borland, I. Jacobs and G. Geelhoed, Intranasal fentanyl reduces acute pain in children in the emergency&amp;nbsp;department: a safety and efficacy study, &lt;i&gt;Emerg Med&lt;/i&gt; (Freemantle) &lt;b&gt;14 &lt;/b&gt;(2002), pp. 275–280.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;J. Finn, J. Wright, J. Fong, E. Mackenzie, F. Wood, G. Leslie and A. Gelavis, A randomized crossover trial of patient&amp;nbsp;controlled intranasal fentanyl and oral morphine for procedural wound care in adult patients with burns, &lt;i&gt;Burns&amp;nbsp;&lt;/i&gt;&lt;b&gt;30 &lt;/b&gt;(3) (2004), pp. 262–268.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;M. Borland, R. Bergesio and E.M. Pascoe et al., Intranasal fentanyl is an equivalent analgesic to oral morphine in&amp;nbsp;paediatric burns patients for dressing changes: a randomised double blind crossover study, &lt;i&gt;Burns &lt;/i&gt;&lt;b&gt;31 &lt;/b&gt;(2005), pp.&amp;nbsp;831–837.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;M. Borland, I. Jacob and B. King et al., A randomized controlled trial comparing intranasal fentanyl to&amp;nbsp;intravenous morphine for managing acute pain in the emergency department, &lt;i&gt;Ann Emerg Med&lt;/i&gt; &lt;b&gt;49 &lt;/b&gt;(2007), pp.&amp;nbsp;335–340.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;C. Rickard, P. O’Meara, M. McGrail, et al., A randomized controlled trial of intranasal fentanyl vs intravenous&amp;nbsp;morphine for analgesia in the prehospital setting, &lt;i&gt;Amer J Emerg Med&lt;/i&gt; &lt;b&gt;25 &lt;/b&gt;(2007), pp. 911-917.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;S. Thomas, S. Shewakramani, Prehospital Trauma Analgesia, &lt;i&gt;J Emerg Med&lt;/i&gt; &lt;b&gt;35 &lt;/b&gt;(2007), pp. 47-57.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;M. Greenwald, Analgesia for the Pediatric Trauma Patient: Primum Non Nocere? &lt;i&gt;Clin Pedi Emerg Med&lt;/i&gt; &lt;b&gt;11 &lt;/b&gt;(2010),&amp;nbsp;pp. 28-40.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;S. Mudd, Intranasal Fentanyl for Pain Management in Pediatrics: A Review of the Literature, &lt;i&gt;J Pedi Health Care&lt;/i&gt;&amp;nbsp;(2010), Article in Press. &lt;a href="http://www.jpedhc.org/article/S0891-5245(10)00098-2/fulltext"&gt;doi:10.1016/j.pedhc.2010.04.011&lt;/a&gt;.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-4202332206259476534?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/4202332206259476534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=4202332206259476534' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4202332206259476534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4202332206259476534'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2010/12/pediatric-intranasal-fentanyl.html' title='Pediatric Intranasal Fentanyl'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-9013675225698365552</id><published>2010-10-22T18:33:00.000-04:00</published><updated>2010-10-22T18:33:46.810-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>One Year: Thank You</title><content type='html'>One year has passed since I received my EMT-Paramedic, and I'd like to say thank you.&lt;br /&gt;&lt;br /&gt;Firstly, to my friends and family. You have endured my absence well, or at least have hid your anger well. I'm sure this last year has been tough, but probably not as tough as paramedic school. I really could not do this job without your support, especially as a volunteer. I cannot say it enough, thank you.&lt;br /&gt;&lt;br /&gt;To my colleagues and peers, you have surely challenged me to accomplish things I never knew I was capable of doing. You have mentored me, scolded me, and sat patiently while I fumbled with IVs. There is an entire network of you online which have been invaluable as a sounding board and a reference. I can only hope I will continue to take what you have given me and make myself a better Paramedic going forward. The fact that I feel like my feet are underneath me at all is a testament to you all, thank you.&lt;br /&gt;&lt;br /&gt;Lastly, to my patients of whom I've met quite a few: you have taught me more than I could ever hope to tell you.&amp;nbsp;Some of you were thrust into my arms, others I knelt and said goodbye.&amp;nbsp;You have challenged me to better myself and I appreciate every experience.&amp;nbsp;My life as a green Paramedic has been an odd mix of on-the-job training for emergencies I was never told about and connecting the dots for those I was told every day about. I thank you for your understanding.&amp;nbsp;I hope that I can tell a story of that time I sat next to you on a flight, and heard about your trip to see your&amp;nbsp;niece&amp;nbsp;get married. That is why I am here, you are why I am here. I feel blessed to meet each and every one of you, thank you.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-9013675225698365552?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/9013675225698365552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=9013675225698365552' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/9013675225698365552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/9013675225698365552'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2010/10/one-year-thank-you.html' title='One Year: Thank You'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-1305060979378598191</id><published>2010-10-18T15:30:00.001-04:00</published><updated>2010-10-18T16:32:26.186-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>2010 AHA CPR/ECC Guidelines</title><content type='html'>If you haven't already heard, today the &lt;a href="http://circ.ahajournals.org/content/vol122/18_suppl_3/"&gt;AHA released the 2010 edition of their CPR/ECC Guidelines&lt;/a&gt; which include updates for laypersons, BLS, ACLS, PALS, and neonatal resuscitation. If you've been following resuscitation research at all for the last few years, there are not many surprises.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Compressions trump ventilations in adult patients (&lt;b&gt;C-A-B&lt;/b&gt; not A-B-C).&lt;/li&gt;&lt;li&gt;Minimize interruptions in the "flow" of a resuscitation, that is, continuous compressions are to be minimally interrupted.&lt;/li&gt;&lt;li&gt;ETCO2 is to be preferred over manual pulse checks: if you don't have a rise in ETCO2 to physiologic or near-physiologic levels, you probably do not have a perfusing rhythm.&lt;/li&gt;&lt;li&gt;AEDs are indicated for all ages, including infants and neonates, provided there are pads available which fit without overlap (&amp;gt;3cm gap).&lt;/li&gt;&lt;li&gt;Pharmacologic therapy has the same weight as TCP in certain bradyarrhythmias.&lt;/li&gt;&lt;li&gt;Procainamide is now first-line or at least recommended on par with Amiodarone, Lidocaine is almost off the list.&lt;/li&gt;&lt;li&gt;Atropine is no longer recommended during routine PEA/Asystole resuscitations.&lt;/li&gt;&lt;li&gt;Studies into neonatal resuscitation have shown that deep suctioning is not required in vigorously born neonates with meconium staining.&lt;/li&gt;&lt;li&gt;Routine use of naloxone in cardiac arrest secondary to opioid overdose is not recommended.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;There were many other differences, including the addition of circular flowcharts documenting the new guidelines (linear flowcharts are still provided). I encourage everyone to read them.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Edit:&lt;/b&gt;&amp;nbsp;here is a &lt;a href="http://www.heart.org/idc/groups/heart-public/@wcm/@ecc/documents/downloadable/ucm_317350.pdf"&gt;document (PDF) comparing the AHA 2005 CPR/ECC guidelines to the 2010 guidelines&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-1305060979378598191?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/1305060979378598191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=1305060979378598191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/1305060979378598191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/1305060979378598191'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2010/10/2010-aha-cprecc-guidelines.html' title='2010 AHA CPR/ECC Guidelines'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-7223259439907109399</id><published>2010-09-13T16:59:00.001-04:00</published><updated>2010-09-13T17:04:01.426-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>How many Automated External Defibrillators are at your place of work?</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;Our Industrial Fire Brigade just added 10 more AEDs to our site. By my rough calculations this means we have 1 AED for every 150 employees and 1 AED for every 80,000 sqft of floor space (we have almost 2 million sqft). To put this in perspective, the recommendations generally are for 1 AED per 100,000-150,000 sqft or building floor. We now have an AED and emergency responders within 2 minutes of every employee on site!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_XnHVrPnrx7o/TI6P9Ffzv1I/AAAAAAAABss/ALrpbaGpp3A/s1600/heartstarts.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="295" src="http://4.bp.blogspot.com/_XnHVrPnrx7o/TI6P9Ffzv1I/AAAAAAAABss/ALrpbaGpp3A/s400/heartstarts.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;The Philips HeartStart FRx is a great first responder AED as this author has learned through personal experience.&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: Arial; font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;How does your place of work stack up? Do you need help with corporate/management buy-in? Perhaps our site's successes can help you out. Let me know!&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-7223259439907109399?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/7223259439907109399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=7223259439907109399' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/7223259439907109399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/7223259439907109399'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2010/09/how-many-automated-external.html' title='How many Automated External Defibrillators are at your place of work?'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_XnHVrPnrx7o/TI6P9Ffzv1I/AAAAAAAABss/ALrpbaGpp3A/s72-c/heartstarts.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-9157990627720765086</id><published>2010-09-07T14:59:00.002-04:00</published><updated>2010-09-16T22:17:25.674-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>12-Lead ECG: What Is It?</title><content type='html'>While cleaning up my office to put in a reading chair, I found the following 12-Lead ECGs from my clinical time. &amp;nbsp;I apologize for the poor quality of the first one, but it is a copy of a copy (of probably a copy). I have limited information on the patients for each of them somewhere in my clinical binder, but I haven't found those yet.&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_XnHVrPnrx7o/TIaLbF_yv6I/AAAAAAAABsc/YNxSl0ygrFk/s1600/ECG+What+Is+It+1.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="308" src="http://3.bp.blogspot.com/_XnHVrPnrx7o/TIaLbF_yv6I/AAAAAAAABsc/YNxSl0ygrFk/s400/ECG+What+Is+It+1.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;b&gt;ECG 1&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_XnHVrPnrx7o/TIaLH9jN83I/AAAAAAAABsU/FJTRGAyxbgQ/s1600/ECG+What+Is+It+3.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="308" src="http://1.bp.blogspot.com/_XnHVrPnrx7o/TIaLH9jN83I/AAAAAAAABsU/FJTRGAyxbgQ/s400/ECG+What+Is+It+3.jpg" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;b&gt;ECG 2&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div style="margin: 0px;"&gt;What do these two 12-Leads show?&lt;/div&gt;&lt;div style="margin: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="margin: 0px;"&gt;Do you agree with the computerized statements?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update on ECG 1&lt;/b&gt; (16 Sept 2010)&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;The patient's lab values include a K+ of 2.1 mEq/L. What are some of the expected ECG changes in hypokalemia? Does this ECG show a classical or atypical presentation of hypokalemia?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-9157990627720765086?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/9157990627720765086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=9157990627720765086' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/9157990627720765086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/9157990627720765086'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2010/09/12-lead-ecg-what-is-it.html' title='12-Lead ECG: What Is It?'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_XnHVrPnrx7o/TIaLbF_yv6I/AAAAAAAABsc/YNxSl0ygrFk/s72-c/ECG+What+Is+It+1.jpg' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-3224411631372188273</id><published>2010-08-23T17:28:00.004-04:00</published><updated>2010-09-03T14:30:50.193-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Pediatric Transcutaneous Pacing</title><content type='html'>Being out of school only recently, I'm often asked "book" questions  which are likely to be fresh in my mind. One of these that had me  stumped was simply, "&lt;b&gt;what is the appropriate current settings for  pediatric transcutaneous pacing?&lt;/b&gt;"&lt;br /&gt;&lt;br /&gt;I had no answer.&lt;br /&gt;&lt;br /&gt;Honestly  I had no idea, but assumed it would be weight based, and along the  lines of the PALS guidelines for defibrillation. However, when I  researched this topic in my PALS book I found there were no answers for  pediatric pacing [&lt;a href="#pace_ref1"&gt;1&lt;/a&gt;]. In fact, there was little mention of TCP whatsoever! Going  over to ACLS I found no answers for current settings in adults, just when it was indicated [&lt;a href="#pace_ref2"&gt;2&lt;/a&gt;].&lt;br /&gt;&lt;br /&gt;However, in Paramedic school we had been taught the  appropriate current ranges for TCP in adults, which ranged from 20-200  mA. &lt;b&gt;Zoll et al&lt;/b&gt; found that most adults responded to TCP in the  range of 40-70 mA, however, some required currents up to the device  maximum of 140 mA [&lt;a href="#pace_ref3"&gt;3&lt;/a&gt;]. After a few hours of searching for guidelines specific to pediatrics (including the Philips, Physio-Control, and Zoll  websites), I came across a study on TCP in pediatrics which focused on  the current required for different electrode sizes. Much to my  amazement, &lt;b&gt;the current settings required for external transcutaneous pacing of pediatrics are the same as for an adult&lt;/b&gt;!&lt;br /&gt;&lt;blockquote&gt;A total of 56 pacing trials were conducted, 53 of which were  successful  in obtaining capture. A mean output of 63 +/- 14 mA (range, 42-98) at  threshold using the large electrodes was comparable to published adult  requirements. &lt;b&gt;Béland MJ et al&lt;/b&gt; [&lt;a href="#pace_ref4"&gt;4&lt;/a&gt;]&lt;/blockquote&gt;How could this be, &lt;b&gt;wouldn't a smaller heart need less energy&lt;/b&gt;?&lt;br /&gt;&lt;br /&gt;It seemed paradoxical at first, but reviewing the anatomy and physiology of a myocyte with an emphasis on the physics aspect puts it into perspective [&lt;a href="#pace_ref5"&gt;5&lt;/a&gt;]. Each myocyte in the heart is a part of  what amounts to an big electromechanical pump. Given a sufficient input stimulus a myocyte contracts and forwards a stimulus to its neighbors, which  follow suit, leading to the eventual coordination of systole and  diastole.&lt;br /&gt;&lt;br /&gt;The goal of any artificial cardiac pacemaker, whether internal or external, is to act as the primary input stimulus by applying a current to an area of the heart which exceeds the &lt;i&gt;stimulation threshold&lt;/i&gt;,  i.e. the current required to cause a response from the myocardium. &lt;br /&gt;&lt;br /&gt;Therefore, transcutaneous cardiac pacemakers attempt to exceed the stimulation threshold&amp;nbsp;&lt;b&gt;of a single area&lt;/b&gt;. It would be hard to achieve coordinated ventricular activity if the current was too high, instead you would have defibrillation. It stands to reason that if the only threshold required to overcome is the stimulation threshold of a single area of the myocardium, the weight of the heart--generalized as the weight of the patient--would be irrelevant.&lt;br /&gt;&lt;br /&gt;In contrast, the goal of defibrillation is to bring all electrical activity in the heart to a halt. Defibrillation  is not successful unless the all of the reentrant activations of  ventricular fibrillation are stopped. Therefore the therapeutic energy  levels are going to be proportional to the amount of myocardium you are acting on. Hence, pediatric defibrillation energy dosages are weight based.&lt;br /&gt;&lt;br /&gt;So what seemed counterintuitive at first, is actually fairly logical. Pediatric transcutaneous cardiac pacing has the same energy requirements as adults because myocardium has the same stimulation threshold regardless of age. This deduction is supported in the literature as well:&lt;br /&gt;&lt;blockquote&gt;No correlation has been defined between transcutaneous pacing threshholds and age, body weight, body surface area, chest diameter, cardiac drug therapy, or etiology of underlying heart disease. [&lt;a href="#pace_ref6"&gt;6&lt;/a&gt;]&lt;/blockquote&gt;So there we have it, transcutaneous cardiac pacing current setting ranges are universal amongst our patient population. Below is a guideline I've created as a supplement to the material contained within PALS:&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Pediatric Transcutaneous Cardiac Pacing&lt;/b&gt;&lt;br /&gt;Symptomatic bradycardia in the pediatric population is most often related to hypoxia secondary to respiratory etiologies. In rare situations it may exist in spite of adequate ventilation and oxygenation. Given the presence of a high degree heart blocks, or symptomatic bradycardia refractory to aggressive BLS and ALS treatments, transcutaneous cardiac pacing should be initiated without delay.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Indications&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;High degree heart blocks&lt;/li&gt;&lt;li&gt;Symptomatic bradycardia refractory to ventilation, oxygenation, chest compressions, and pharmacological treatments&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Contraindications&lt;/b&gt;&lt;br /&gt;The only contraindication of TCP is an inability to place the pads on the patient without overlap or sufficient distance between them.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Side Effects&lt;/b&gt;&lt;br /&gt;The side effects of TCP are most frequently muscle activation and associated pain. These are dose dependent effects which are a combination of the current delivered, size of the pads, location of the pads, and width (time) of the delivered pulse [&lt;a href="#ref7"&gt;7&lt;/a&gt;].&lt;br /&gt;&lt;br /&gt;To minimize these side effects use the largest available pads, placing them in an Apical-Posterior fashion. While larger pads require higher current outputs, there is a decrease in the current delivered per surface area reducing the side effects associated with TCP.&lt;br /&gt;&lt;br /&gt;Often, management of these side effects is achieved through concurrent pharmacological treatment with analgesics and/or sedatives.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Dose&lt;/b&gt;&lt;br /&gt;Pediatric transcutaneous cardiac pacing (TCP) is defined by two dosing parameters: output current and rate. This guideline assumes the pacemaker is in fixed mode.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Output Current&lt;/i&gt;&lt;br /&gt;As with adult patients, the output current for pediatric transcutaneous cardiac pacing should begin at 20 mA (or the lowest setting available) and increase in 5-10 mA increments until electromechanical capture is obtained. Additionally, the current may be increased an additional 5-10 mA above the determined threshold to ensure continued capture. If the device maximum output current is reached and no electromechanical capture exists, discontinue TCP and troubleshoot. Attempt an alternative pad placement (anterio-apical or anterior-posterior) and ensure the negative pad is on the anterior aspect of the chest. If capture is still not obtained, resume CPR and obtain expert consultation.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Output Rate&lt;/i&gt;&lt;br /&gt;In contrast to adult patients, the output rate for pediatric transcutaneous cardiac pacing is age based.  The final output rate should be titrated to an adequate systolic blood pressure to resolve perfusion problems, e.g. an improvement in mental status. Care should be taken to avoid tachycardic rates or hypertension. Consult a length-based resuscitation tape (e.g. Broselow™ tape) for appropriate starting output rates and systolic blood pressure. An example table is given below, adapted from the North Carolina 2009 EMS Standards [&lt;a href="#pace_ref8"&gt;8&lt;/a&gt;]:&lt;br /&gt;&lt;br /&gt;&lt;table align="center" border="1" style="width: 350px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th&gt;Age&lt;/th&gt;&lt;th&gt;Rate (bpm)&lt;/th&gt;&lt;th&gt;Systolic BP (mmHg)&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;0-3 mo&lt;/td&gt;&lt;td align="center"&gt;120-150&lt;/td&gt;&lt;td align="center"&gt;85 (+/-25)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;3-6 mo&lt;/td&gt;&lt;td align="center"&gt;120-130&lt;/td&gt;&lt;td align="center"&gt;90 (+/-30)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;7-10 mo&lt;/td&gt;&lt;td align="center"&gt;120&lt;/td&gt;&lt;td align="center"&gt;96 (+/-25)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;11-18 mo&lt;/td&gt;&lt;td align="center"&gt;110-120&lt;/td&gt;&lt;td align="center"&gt;100 (+/-30)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;19-35 mo&lt;/td&gt;&lt;td align="center"&gt;110-120&lt;/td&gt;&lt;td align="center"&gt;100 (+/-20)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;3-4 yr&lt;/td&gt;&lt;td align="center"&gt;100-110&lt;/td&gt;&lt;td align="center"&gt;100 (+/-20)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;5-6 yr&lt;/td&gt;&lt;td align="center"&gt;100&lt;/td&gt;&lt;td align="center"&gt;100 (+/-15)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;7-9 yr&lt;/td&gt;&lt;td align="center"&gt;90-100&lt;/td&gt;&lt;td align="center"&gt;105 (+/-15)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;10-12 yr&lt;/td&gt;&lt;td align="center"&gt;80-90&lt;/td&gt;&lt;td align="center"&gt;115 (+/-20)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="center"&gt;&amp;gt;12 yr&lt;/td&gt;&lt;td align="center"&gt;70-80&lt;/td&gt;&lt;td align="center"&gt;120 (+/-20)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;b&gt;References&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a href="" name="pace_ref1"&gt;American Heart Association. 2005 American Heart Association Guidelines for Cardiopulmonary Resuscitation and Emergency Cardiovascular Care: Part 12: Pediatric Advanced Life Support. Circ 2005; 112 (24): [Suppl I:] IV-167-IV-187.&lt;/a&gt; [&lt;a href="http://circ.ahajournals.org/cgi/content/full/112/24_suppl/IV-167"&gt;Full Text&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;&lt;a href="" name="pace_ref2"&gt;American Heart Association. 2005 American Heart Association Guidelines for Cardiopulmonary Resuscitation and Emergency Cardiovascular Care: Part 5: Electrical Therapies. Circ 2005; 112: [Suppl I:] IV-35-IV-46.&lt;/a&gt; [&lt;a href="http://circ.ahajournals.org/cgi/content/full/112/24_suppl/IV-35"&gt;Full Text&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;&lt;a href="" name="pace_ref3"&gt;Zoll PM, et al. External noninvasive temporary cardiac pacing: clinical trials. Circ 1985; 71: 937-944.&lt;/a&gt; [&lt;a href="http://circ.ahajournals.org/cgi/reprint/71/5/937"&gt;Full Text PDF&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;&lt;a href="" name="pace_ref4"&gt;Béland MJ, et al. Noninvasive transcutaneous cardiac pacing in children. Pacing Clin Electrophysiol. 1987 Nov; 10(6):1262-70.&lt;/a&gt; [&lt;a href="http://www.ncbi.nlm.nih.gov/pubmed/2446273"&gt;PubMed&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;&lt;a href="" name="pace_ref5"&gt;Malmivuo J, Plonsey R. Bioelectromagnetism: Principles and Applications of Bioelectric and Biomagnetic Fields. 1985 New York: Oxford University Press. Chaps 15,19,23-24.&lt;/a&gt; [&lt;a href="http://www.bem.fi/book/00/tx.htm"&gt;Full Text&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;&lt;a href="" name="pace_ref6"&gt;Ellenbogen KA, Wood MA. Cardiac pacing and ICDs. 2005: Wiley-Blackwell. pp 163-191.&lt;/a&gt; [&lt;a href="http://books.google.com/books?id=qchWint-HxgC"&gt;Google Books&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;&lt;a href="" name="pace_ref7"&gt;Bocka JJ. eMedicine: External Pacemakers. 23 Sep 2009. Retrieved 17 Aug 2010.&lt;/a&gt; [&lt;a href="http://emedicine.medscape.com/article/780639-overview"&gt;Website&lt;/a&gt;]&lt;/li&gt;&lt;li&gt;&lt;a href="" name="pace_ref8"&gt;2009 NC EMS Standards Document: Color Coded Pediatric Drug List B. Retrieved 17 Aug 2010.&lt;/a&gt; [&lt;a href="http://www.ncems.org/pdf/PediatricDrugListB2009.pdf"&gt;Full Text PDF&lt;/a&gt;]&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-3224411631372188273?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/3224411631372188273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=3224411631372188273' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/3224411631372188273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/3224411631372188273'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2010/08/pediatric-transcutaneous-pacing.html' title='Pediatric Transcutaneous Pacing'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-4140630336253599901</id><published>2010-07-28T18:34:00.000-04:00</published><updated>2010-07-28T18:34:06.083-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Hands-Only CPR</title><content type='html'>&lt;a href="http://blogs.nejm.org/now/index.php/every-breath-you-shouldnt-take/2010/07/28/"&gt;Now@NEJM just posted an article detailing the results of two new studies on Hands-Only or Compressions-Only CPR or Cardiocerebral Resuscitation (CCR)&lt;/a&gt;. These studies[1,2] look very promising, in fact they showed no appreciable difference in overall survival-to-discharge for traditional CPR versus CCR. Moreover, when one of the studies, by &lt;b&gt;Rea et al&lt;/b&gt;[1], compared using CCR to CPR survival-to-discharge of cardiac arrest victims of a primary cardiac etiology there was an increase from 12.3% to 15.5%, although it was not statistically significant. However, when comparing CCR to CPR to non-cardiac etiologies, there was a higher percentage of survivability in the CPR group (7.2% vs. 5.0%), although this as well was not statistically significant.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;So what does this mean?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The researchers in &lt;b&gt;Rea et al&lt;/b&gt;[1] note that while there was no statistically significant difference between the two, there was a clinically significant trend towards higher survival-to-discharge numbers using compressions alone. Additionally, 80.5% (n=981) of callers given compressions-only instructions began compressions versus 72.7% (n=960) given traditional CPR instructions. Overall 76.7% (n=1941) of callers began either CCR or CPR, which means 1 in 4 callers declined to perform some form of resuscitation.&lt;br /&gt;&lt;br /&gt;Taking a closer look at the efficacy of the caller instructions, there is a nearly 8% increase in initiation of compressions under compressions-only instructions. Applying that increase to the CPR-instructions group would have meant nearly 75 more patients would have received compressions! Potentially another 9 people could have gone home from the hospital. Rea et al went as far as saying this was a clinically significant difference, but we all know how big of a difference it makes having just one more person walk home.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;So what should we do?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I think progressive systems with tight integration between first responders, EMS, and dispatch need to get the Hands-Only word out to the public. Start using Hands-Only dispatch instructions along with an aggressive public information campaign. I feel in just a 60-90 second TV advertisement, Hands-Only CPR could be demonstrated to the public effectively. You could even throw in your favorite prime time TV cast to really capture those eyeballs.&lt;br /&gt;&lt;br /&gt;I've not been in EMS very long, but my heart sinks every time I walk into a house and there has been no attempt at CPR. Our response times are often in the 8-9 minute range which means most of our attempts are futile. I understand the psychological barriers are high, but we need something to improve the rates of bystander CPR. If these studies have shown one thing, it is that Hands-Only CPR has a good chance of doing just that.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;References&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;1. Rea TD, et al. CPR with Chest Compression Alone or With Rescue Breathing. N Engl J Med 2010; 363: 423-433. [&lt;/span&gt;&lt;a href="http://www.nejm.org/doi/full/10.1056/NEJMoa0908993"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;at nejm.org&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;Conclusions&lt;/i&gt;: Dispatcher instruction consisting of chest compression alone did not increase the survival rate overall, although there was a trend toward better outcomes in key clinical subgroups. The results support a strategy for CPR performed by laypersons that emphasizes chest compression and minimizes the role of rescue breathing.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;2. Svensson L, et al. Compression-Only CPR or Standard CPR in Out-of-Hospital Cardiac Arrest. N Engl J Med 2010; 363: 434-442. [&lt;/span&gt;&lt;a href="http://www.nejm.org/doi/full/10.1056/NEJMoa0908991"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;at nejm.org&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;]&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;i&gt;Conclusions&lt;/i&gt;:&amp;nbsp;This prospective, randomized study showed no significant difference with respect to survival at 30 days between instructions given by an emergency medical dispatcher, before the arrival of EMS personnel, for compression-only CPR and instructions for standard CPR in patients with suspected, witnessed, out-of-hospital cardiac arrest.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-4140630336253599901?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/4140630336253599901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=4140630336253599901' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4140630336253599901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4140630336253599901'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2010/07/hands-only-cpr.html' title='Hands-Only CPR'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-1047092399685854959</id><published>2010-07-20T15:34:00.000-04:00</published><updated>2010-07-20T15:34:04.219-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Morphine Equivalents Visualized</title><content type='html'>My day job involves the creation of visualization software to help engineers evaluate complex systems. In my last post detailing Morphine Equivalents there was math, and numbers, and eyes glazing. So, as an aide to the previous post I submit to you a graph of the three narcotic dosing schedules. I pulled the half-lives from Wikipedia and assumed a bioavailability of 100% for the IV route.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_XnHVrPnrx7o/TEX5-0qrtjI/AAAAAAAABrc/PmdDS4tCC1E/s1600/narcotic+schedules.png" imageanchor="1"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_XnHVrPnrx7o/TEX5-0qrtjI/AAAAAAAABrc/PmdDS4tCC1E/s1600/narcotic+schedules.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;The half-lives used are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Morphine&lt;/b&gt;: 2-3 hours&lt;/li&gt;&lt;li&gt;&lt;b&gt;Fentanyl&lt;/b&gt;: 2-4 hours&lt;/li&gt;&lt;li&gt;&lt;b&gt;Dilaudid&lt;/b&gt;: 2-3 hours&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-1047092399685854959?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/1047092399685854959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=1047092399685854959' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/1047092399685854959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/1047092399685854959'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2010/07/morphine-equivalents-visualized.html' title='Morphine Equivalents Visualized'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_XnHVrPnrx7o/TEX5-0qrtjI/AAAAAAAABrc/PmdDS4tCC1E/s72-c/narcotic+schedules.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-6991651471168180237</id><published>2010-07-06T13:29:00.002-04:00</published><updated>2011-04-11T11:15:23.111-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Morphine Equivalents</title><content type='html'>A pretty hot topic lately has been prehospital pain control and how for the most part it is viewed as a failure. Granted, the perception of how well prehospital providers handle pain control is not what I'm looking to talk about,&amp;nbsp;&lt;a href="http://roguemedic.blogspot.com/2010/05/comment-on-intravenous-morphine-at-01.html"&gt;Rogue Medic&lt;/a&gt;&amp;nbsp;and the bloggers at&amp;nbsp;&lt;a href="http://paramedicine101.blogspot.com/2010/05/prehospital-use-of-analgesia-for.html"&gt;Paramedicine 101&lt;/a&gt;&amp;nbsp;have touched on this topic quite a number of times.&lt;br /&gt;&lt;br /&gt;What I'd like to do is add a little math to the discussion. Over at &lt;a href="http://medicscribe.com/2010/07/morphine-and-fentanyl/"&gt;Street Watch: Notes of a Paramedic&lt;/a&gt; there is an excellent post about a new study on Fentanyl versus Morphine combined with a more liberal pain control protocol. The protocol mentioned "Morphine Equivalents," something of which I was only&amp;nbsp;tangentially&amp;nbsp;aware.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;"Morphine Equivalents"&lt;/b&gt; are basically a unit of measure used to compare the efficacy of opiods. After &lt;a href="http://lmgtfy.com/?q=morphine+equivalents"&gt;a trivial amount of Googling&lt;/a&gt; I came across an easy to follow &lt;a href="http://www.uofapain.med.ualberta.ca/For%20Professionals/Opioid%20conversion/Opioid%20conversion_PDF.pdf"&gt;guide from the University of Alberta's Multidisciplinary Pain Centre&lt;/a&gt;&amp;nbsp;which listed conversion factors between various opiods. Using these conversion factors, we could compare how equivalent various pain control protocols are.&lt;br /&gt;&lt;br /&gt;In &lt;a href="http://www.ncems.org/nccep.html"&gt;North Carolina our 2009 EMS protocols&lt;/a&gt; allow 3 opiods for the treatment of pain: dilaudid, morphine, and fentanyl.&amp;nbsp;Per the conversion guide, these drugs compare as follows:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;1 mg&lt;/i&gt; of &lt;b&gt;Fentanyl &lt;/b&gt;is equivalent to &lt;i&gt;100 mg&lt;/i&gt; of &lt;b&gt;Morphine&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;1 mg&lt;/i&gt; of &lt;b&gt;Dilaudid &lt;/b&gt;is equivalent to &lt;i&gt;5 mg&lt;/i&gt; of &lt;b&gt;Morphine&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;So let's examine the 2009 NC Protocols for Pain Control:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Morphine&lt;/b&gt;: 4 mg IM/IV/IO bolus, may repeat with 2 mg every 3-5 minutes to a max 10 mg or clinical improvement&lt;/li&gt;&lt;li&gt;&lt;b&gt;Fentanyl&lt;/b&gt;: 50-75 mcg IM/IV/IO bolus, may repeat with 25 mcg every 20-30 minutes to a max 200 mcg or clinical improvement&lt;/li&gt;&lt;li&gt;&lt;b&gt;Dilaudid&lt;/b&gt;: 1-2 mg IM/IV/IO bolus, may repeat with 1 mg every 20-30 minutes to a max 5 mg or clinical improvement&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Now let's do the conversion to Morphine Equivalents (MSeqv hereafter):&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Fentanyl&lt;/b&gt;: &lt;span class="Apple-style-span" style="background-color: black;"&gt;5-7.5 MSeqv&lt;/span&gt; bolus, may repeat with &lt;span class="Apple-style-span" style="background-color: black;"&gt;2.5 MSeqv&lt;/span&gt; every 20-30 minutes to a max &lt;span class="Apple-style-span" style="background-color: black;"&gt;20 MSeqv&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Dilaudid&lt;/b&gt;: &lt;span class="Apple-style-span" style="background-color: black;"&gt;5-10 MSeqv&lt;/span&gt; bolus, may repeat with &lt;span class="Apple-style-span" style="background-color: black;"&gt;5 MSeqv&lt;/span&gt; every 20-30 minutes to a max &lt;span class="Apple-style-span" style="background-color: black;"&gt;25 MSeqv&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Both the Fentanyl and Dilaudid protocols allow for a higher loading dose in Morphine Equivalents. They both offer a much higher maximum dosage as well. However, if we look at the rebolus schedule they compare poorly to Morphine. Fentanyl's maintenance schedule is 5x weaker, and Dilaudid's is 2.5x weaker than the equivalent Morphine schedule.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Moreover, when you compare the amount of Morphine Equivalents per minute allowed by the protocol, assuming you had the maximum time required to deliver each medication, you find both Fentanyl and Dilaudid compare poorly to Morphine:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Morphine&lt;/b&gt;: &lt;span class="Apple-style-span" style="background-color: black;"&gt;0.8 MSeqv/minute&lt;/span&gt; (max reached in 12 minutes)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Fentanyl&lt;/b&gt;: &lt;span class="Apple-style-span" style="background-color: black;"&gt;0.2 MSeqv/minute&lt;/span&gt; (max reached in 120 minutes)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Dilaudid&lt;/b&gt;: &lt;span class="Apple-style-span" style="background-color: black;"&gt;0.3 MSeqv/minute&lt;/span&gt; (max reached in 80 minutes)&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Take this with a huge grain of salt, because this mathematical comparison does not take into account bioavailability, half-life, side effects, rate of administration, and probably a whole host of other important factors. However, what this comparison does show is that while pain control protocols have improved and prehospital providers have options, they aren't all necessarily equal!&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;i&gt;Updated 20 July 2010&lt;/i&gt;&lt;/b&gt;: &lt;a href="http://sixlettervariable.blogspot.com/2010/07/morphine-equivalents-visualized.html"&gt;For a visual representation of their "strength of schedule" see Morphine Equivalents Visualized&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-6991651471168180237?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/6991651471168180237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=6991651471168180237' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/6991651471168180237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/6991651471168180237'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2010/07/morphine-equivalents.html' title='Morphine Equivalents'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-9218008809428126156</id><published>2010-06-09T19:55:00.000-04:00</published><updated>2010-06-09T19:55:22.873-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Something for my tag line</title><content type='html'>&lt;blockquote&gt;"...and sometimes you get to shake someone's hand."&lt;/blockquote&gt;&amp;nbsp;It's a great feeling.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-9218008809428126156?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/9218008809428126156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=9218008809428126156' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/9218008809428126156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/9218008809428126156'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2010/06/something-for-my-tag-line.html' title='Something for my tag line'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-8935473329960253353</id><published>2010-05-28T09:09:00.002-04:00</published><updated>2010-05-28T09:09:43.232-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Question about my Job Description</title><content type='html'>&lt;blockquote&gt;&lt;a href="http://www.ems1.com/Columnists/david-givot/articles/825069-Doing-whats-right-versus-doing-whats-allowed/"&gt;"Paramedics are not there to determine what is or isn't a life and death situation."&lt;/a&gt;&lt;/blockquote&gt;I must have missed something in paramedic school.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-8935473329960253353?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/8935473329960253353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=8935473329960253353' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/8935473329960253353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/8935473329960253353'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2010/05/question-about-my-job-description.html' title='Question about my Job Description'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-7534614599991234084</id><published>2010-02-22T17:57:00.005-05:00</published><updated>2010-02-22T18:36:29.861-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Improving BLS to ALS Patient Handoff in Cardiac Arrest</title><content type='html'>&lt;p&gt;One of the benefits of my software engineering job is access to a large corpus of journals through &lt;a href="http://www.sciencedirect.com/"&gt;ScienceDirect&lt;/a&gt;. About once a month I pick a topic and pull the latest research. This month I did a journal search for &lt;i&gt;"paramedic" AND 2010 &lt;/i&gt;which returned&amp;nbsp;many interesting articles. One that particularly piqued my interest was Berdowski J, et al: &lt;i&gt;Delaying a shock after takeover from the automated external defibrillator by paramedics is associated with decreased survival&lt;/i&gt; [1]. The authors found that if the paramedics switched from using the AED to their monitor and a shock was delayed, for whatever reason, there was a decrease in patient survivability to admission.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Currently I work for two services in two different counties, one is a BLS industrial fire brigade and the other is an ALS combined Fire/EMS department. Both services have AEDs for their BLS providers with pads that are interchangeable with the monitors predominantly carried by the ALS units in their respective counties (Philips in one, Physio in the other). The standardization on pads obviously makes BLS to ALS patient handoff simpler during cardiac arrest. However, I had not considered at what point in resuscitation would be the most appropriate to make the pad switch.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;As the research showed, in nearly two thirds of the cases where a switch from the AED to the ALS monitor was made, the delivery of an appropriate shock was delayed. Barring equipment or operator malfunction, an AED and a paramedic are both going to defibrillate the same rhythms. Paramedics can still place the patient on their monitor with a 3-Lead even if they have not changed the pads over. The study authors conclude that the appropriate time to switch the pads would be after the AED delivers a shock or advises that no shock should be delivered.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_XnHVrPnrx7o/S4MLMShZK-I/AAAAAAAABqY/nSUtQTMq34g/s1600-h/aed-als-monitor-handoff.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="178" src="http://4.bp.blogspot.com/_XnHVrPnrx7o/S4MLMShZK-I/AAAAAAAABqY/nSUtQTMq34g/s320/aed-als-monitor-handoff.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Schematic timeframe of the ALS takeover period (Berdowski J, et al)&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;The mechanics of a patient handoff from a BLS unit to an ALS unit during cardiac arrest are not something touched on in paramedic school or ACLS [2]. The handling of compressions versus defibrillation is rightfully stressed, but this appears to have missed another factor critical to patient survival. In retrospect this factor is obvious and thankfully easily correctable perhaps simply through recognition. ACLS classes geared towards pre-hospital providers can add this into scenarios used for testing and EMS protocols can include:&lt;br /&gt;&lt;blockquote&gt;Minimize interruptions in compressions &lt;i&gt;or appropriate defibrillation delivery by first responders&lt;/i&gt; when initiating ALS treatments in cardiac arrest.&lt;/blockquote&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;This minor change is low hanging fruit compared to the benefit to our patients!&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;References&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Berdowski J, et al: Delaying a shock after takeover from the automated external defibrillator by paramedics is associated with decreased survival. &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;Resuscitation &lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;2010; 81: 287-292.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;American Heart Association: 2005 American Heart Association Guidelines for Cardiopulmonary Resuscitation and Emergency Cardiovascular Care Part 5: Electrical Therapies - Automated External Defibrillators, Defibrillation, Cardioversion, and Pacing. &lt;i&gt;Circulation&lt;/i&gt; 2005; 112: IV-35 – IV-46.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-7534614599991234084?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/7534614599991234084/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=7534614599991234084' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/7534614599991234084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/7534614599991234084'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2010/02/improving-bls-to-als-patient-handoff-in.html' title='Improving BLS to ALS Patient Handoff in Cardiac Arrest'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_XnHVrPnrx7o/S4MLMShZK-I/AAAAAAAABqY/nSUtQTMq34g/s72-c/aed-als-monitor-handoff.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-105939709141036929</id><published>2010-02-15T15:33:00.010-05:00</published><updated>2010-02-16T23:19:13.689-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Common and Uncommon Usages of Glucagon in the Field (Part 2)</title><content type='html'>&lt;p&gt;In the pre-hospital setting, Glucagon primarily plays a role in the management of hypoglycemic patients. Emergency Medical Technicians carry Glucagon as an alternative or adjunctive therapy to dextrose administration for these patients. However, this is not the only usage of Glucagon in the field. Many ALS protocols include Glucagon in the treatment of symptomatic bradycardia for patients who have overdosed on β-blockers or are refractory to standard ACLS treatments. As we will find, there are a number of alternative usages of Glucagon which could be considered in the field under online medical direction.&lt;/p&gt;&lt;p&gt;&lt;i&gt;This is a continuation of a two part series: &lt;a href="http://sixlettervariable.blogspot.com/2010/02/common-and-uncommon-usages-of-glucagon.html"&gt;&lt;b&gt;Part 1 contains the pharmacodynamics and common clinical applications of Glucagon&lt;/b&gt;&lt;/a&gt;.&lt;/i&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Uncommon Clinical Applications of Glucagon&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;ul&gt;&lt;li&gt;Steakhouse syndrome&lt;/li&gt;&lt;li&gt;Refractory anaphylaxis&lt;/li&gt;&lt;li&gt;&lt;i&gt;Severe asthma (little support)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Refractory CHF (little support)&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Steakhouse Syndrome&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Steakhouse syndrome, otherwise known as an esophageal food bolus obstruction, is a medical emergency occurring when a foreign body becomes stuck in the esophagus either due to spasms, strictures, or rings. Standard treatment includes endoscopy, digestive enzymes (such as papain), or Glucagon. An interesting property of Glucagon is that it can overcome smooth muscle spasms of the lower esophagus and lower esophageal sphincter pressures. Glucagon has been used in various radiological studies since the 1970s and its hypotonic effects on the esophagus are well documented.&lt;/p&gt;&lt;p&gt;Usage in the ED began formalization in the 1990s with studies on determining an effective treatment protocol. The most common protocol begins with fluoroscopy studies to determine the extent of the obstruction. Next, the patient is laid supine and 1 mg of Glucagon is given over 1 minute via IV push (to lessen the chance of nausea and vomiting). Finally, the patient is sat upright and encouraged to drink 200 cc of water and an effervescent solution. The combination of Glucagon’s spasmolytic effects, the hydrostatic pressure of the column of water, and the esophageal dilation secondary to the effervescence is very successful at passing obstructions.&lt;/p&gt;&lt;p&gt;In the field, patients will present with an inability to swallow, excessive salivation, drooling, and will probably be distressed. If prompt medical attention is not sought, aspiration, esophageal rupture or perforation may occur. A trial of 1 mg Glucagon slow IVP under medical direction may be an effective means of terminating any spasms and passing the obstruction. Glucagon could also be considered in the case of a recent clearing of a foreign body airway or esophageal obstruction with excessive coughing or spasms. Unfortunately the use of Glucagon in the field to treat true esophageal food bolus obstructions is limited by an inability to conduct radiological studies, so unless transport times are long or the EMS system rural, safe and expeditious transport should not be delayed.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Refractory Anaphylaxis&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Prompt recognition and management of anaphylactic shock is constantly stressed in EMS education as it is both rapidly fatal and reversible. Treatment protocols include epinephrine, antihistamines, corticosteroids, inhaled β2-agonists, and aggressive fluid resuscitation. However, in certain patient populations the use of epinephrine may not be desired or outright contraindicated. Additionally, some patients may just not respond to β-adrenergic stimulation. Due to its orthogonal cardiovascular mechanism of action, Glucagon is an appropriate choice as supplemental treatment in these patients.&lt;/p&gt;&lt;p&gt;In the field, dosages for Glucagon in refractory anaphylaxis should begin at 1 mg IV every 5 minutes as needed. If the patient has a known β-blockade or is refractory to epinephrine, doses as high as 3-5 mg may be required. If hypotension continues in spite of aggressive fluid resuscitation, a maintenance infusion of 1-5 mg/hr should be started, titrated to effect. As discussed in β-blocker overdoses, most ALS units do not carry enough Glucagon for prolonged treatment and additional units should be requested for an intercept. As before, safe and expeditious transport to an ED should not be delayed for treatment with Glucagon.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Severe Asthma&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Treatment of asthma in the field is relatively straightforward, involving nebulized β2-agonists and parasympatholytics, IM sympathomimetics, and IV corticosteroids. However, if a patient has a β-blockade or is in status asthmaticus, the condition may be so severe that standard treatments are not effective on their own. Studies were conducted in the late 1980s and early 1990s on the use of IV and nebulized Glucagon for the adjunctive treatment of bronchospasm. They showed that the smooth muscle relaxation of Glucagon, which is independent of β-adrenergic pathways, provides some clinical benefit when compared against using β2-agonists alone. Current clinical guidelines for the management of asthma note that "last ditch" treatments such as magnesium sulfate or Glucagon have little support in the literature and may even be harmful. However, Glucagon has been shown to be safe even if the additive benefit is negligible.&lt;/p&gt;&lt;p&gt;In the field, patients presenting with severe asthma or status asthmaticus should be treated aggressively using current protocols. Albuterol, ipratropium, epinephrine, and corticosteroids should all be administered prior to the consideration of "last ditch" treatments such as Glucagon. Dosages for Glucagon in severe asthma vary based on the route of administration; 1-2 mg slow IV push or 2 mg nebulized have been shown to be effective in small studies in addition to aggressive β2-agonist treatment. Do not delay safe and expeditious transport or definitive airway management in a decompensating asthmatic.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Refractory CHF&lt;/b&gt;&lt;/p&gt;&lt;p&gt;In a patient with acute Congestive Heart Failure, if they are refractory to inotropes Glucagon can be considered as a potential treatment. Studies conducted in the 1960s and 1970s showed promise for Glucagon as a supportive agent in CHF, but only for NYHA Class I and Class II heart failure. Recent studies, however, do not show strong for a support for Glucagon in CHF, reserving its usage for refractory shock states. Dosages in the field of Glucagon for refractory CHF should be 0.01-0.05 mg/kg IV bolus with a maintenance infusion of 1-3mg/hr. The paucity of literature in support of Glucagon for CHF relegates this treatment to a last ditch effort with close medical direction.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Glucagon is one of the most common items in an ALS drug box and as the literature shows surprisingly versatile. Beyond its hyperglycemic effects, Glucagon is a positive inotropic and chronotropic agent. This oft overlooked mechanism of action arms pre-hospital providers with new treatments without adding additional medications. While medical control will be required for nearly all of the alternate indications, both rural and urban providers can make more informed treatment choices for their patients especially when the standard treatments fail.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Potential Utility of Glucagon in the Field&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Hypoglycemia:&lt;/b&gt; &lt;i&gt;Adults&lt;/i&gt;: 1 mg SQ, IM, IV; 2 mg IN. &lt;i&gt;Peds&lt;/i&gt;: 0.5 mg SQ, IM, IV; 1 mg IN. &lt;i&gt;Neonates&lt;/i&gt;: 50 mcg/kg SQ, IV. (&lt;i&gt;should accompany glucose resuscitation&lt;/i&gt;)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Symptomatic bradycardia secondary to β-blocker overdose:&lt;/b&gt; 10 mg IV bolus, 1-5 mg/hr maintenance infusion. (&lt;i&gt;should supplement standard treatment&lt;/i&gt;)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Symptomatic bradycardia secondary to Ca-channel blocker overdose:&lt;/b&gt; 2-10 mg IV bolus; consider maintenance infusion. (&lt;i&gt;should supplement standard treatment&lt;/i&gt;)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Steakhouse syndrome:&lt;/b&gt; 1 mg SQ, IM, IV, may repeat.&lt;/li&gt;&lt;li&gt;&lt;b&gt;Refractory anaphylaxis:&lt;/b&gt; 1 mg IV q 5 min; consider 3-5 mg IV; consider maintenance infusion. (&lt;i&gt;should supplement standard treatment&lt;/i&gt;)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Severe asthma:&lt;/b&gt; 1-2 mg IV; 1-2 mg nebulized. (&lt;i&gt;paucity of literature to support this use&lt;/i&gt;)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Refractory CHF:&lt;/b&gt; 0.01-0.05 mg/kg IV bolus, 1-3 mg/hr maintenance infusion. (&lt;i&gt;paucity of literature to support this use&lt;/i&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;References&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Pollock CV: Utility of Glucagon in the Emergency Department. &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;J Emerg Med&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; 1993; 11: 195-205.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Rosenfalck AM, et al: Nasal glucagon in the treatment of hypoglycaemia in type 1 (insulin-dependent) diabetic patients. &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Diabetes Research and Clinical Practice&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; 1992; 17: 43-50.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Love JN, Howell JM: Glucagon Therapy in the Treatment of Symptomatic Bradycardia. &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Ann Emerg Med&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; January 1997; 29:181-183.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;American Heart Association. Part 7.3: Management of Symptomatic Bradycardia and Tachycardia. &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Circulation &lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;2005; 112; IV-67-IV-77.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Stadler J, et al: The "steakhouse syndrome". Primary and definitive diagnosis and therapy. &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Surg Endosc&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; 1989; 3(4):195-8.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Glauser J, et al: Intravenous Glucagon in the Management of Esophageal Food Obstruction. &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;JACEP &lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;June 1979; 8: 228-231.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Handal KA, Riordan WM, Siese J: The lower esophagus and glucagon. &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Ann Emerg Med&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; November 1980; 9: 577-579.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Galvagno, Samuel M. (2003). &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Emergency Pathophysiology: Clinical Applications for Prehospital Care&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; (pp. 195-200). Jackson, Wyoming: Teton NewMedia.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Lieberman MD, et al: The diagnosis and management of anaphylaxis: An updated practice parameter. &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;J Allergy Clin Immunol&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; 115 (2005); 3: S483-S523.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Gavalas M, Sadana A, Metcalf S: Guidelines for the management of anaphylaxis in the emergency department.&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; J Accid Emerg Med&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; 1998; 15: 96-98.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Compton J: Use of glucagon in intractable allergic reactions and as an alternative to epinephrine: An interesting case review. &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;J Emerg Nurs&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; 1997; 23: 45-7.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Wilson JE, Nelson RN: Glucagon as a Therapeutic Agent in the Treatment of Asthma.  &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;J Emerg Med&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; 1990; 8: 127-130.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Melanson SW, Bofante G, Heller MB: Nebulized Glucagon in the Treatment of Bronchospasm in Asthmatic Patients. &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Am J Emerg Med&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; 1998; 16: 272-275.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt;Marik PE, Varon J, Fromm R: The Management of Acute Severe Asthma.&lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; J Emerg Med&lt;/span&gt;&lt;/i&gt;&lt;span class="Apple-style-span"  style="font-size:small;"&gt; 2002; 23: 257-268.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-105939709141036929?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/105939709141036929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=105939709141036929' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/105939709141036929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/105939709141036929'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2010/02/common-and-uncommon-usages-of-glucagon_15.html' title='Common and Uncommon Usages of Glucagon in the Field (Part 2)'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-3869814174574408399</id><published>2010-02-08T15:21:00.017-05:00</published><updated>2010-02-16T23:29:36.161-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Common and Uncommon Usages of Glucagon in the Field (Part 1)</title><content type='html'>&lt;p&gt;In the pre-hospital setting, Glucagon primarily plays a role in the management of hypoglycemic patients. Emergency Medical Technicians carry Glucagon as an alternative or adjunctive therapy to dextrose administration in these patients. However, this is not the only usage of Glucagon in the field. Many ALS protocols include Glucagon for the treatment of symptomatic bradycardia in patients who have overdosed on β-blockers or are refractory to standard ACLS treatments. As we will find, there are a number of alternative usages of Glucagon which could be considered in the field under online medical direction.&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Common Clinical Applications of Glucagon&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Hypoglycemia&lt;/li&gt;&lt;li&gt;Symptomatic bradycardia secondary to β-blocker overdose&lt;/li&gt;&lt;li&gt;Symptomatic bradycardia secondary to Ca-channel blocker overdose&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Uncommon Clinical Applications of Glucagon&lt;/b&gt;&lt;ul&gt;&lt;li&gt;Steakhouse syndrome&lt;/li&gt;&lt;li&gt;Refractory anaphylaxis&lt;/li&gt;&lt;li&gt;&lt;i&gt;Severe asthma (little support)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Refractory CHF (little support)&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;Pharmacology&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Glucagon is a hormone produced by alpha cells in the islets of Langerhans of the pancreas. The primary effect of Glucagon is to promote the release of stored glucose in the liver and stimulate the release of insulin from the pancreas to promote uptake of glucose into the cells. Additional effects of Glucagon include a cascade of activations resulting in an increase of cyclic-AMP (cAMP). cAMP is an important intracellular messenger, responsible for carrying the signals of epinephrine and glucagon across the cell membrane. cAMP also regulates the flux of Ca2+ through ion channels independent of β-adrenergic receptors. This quality of Glucagon is what is thought to explain the various changes to the cardiovascular system seen after its administration.&lt;/p&gt;&lt;p&gt;In the field, Glucagon is commonly packaged as a powder which is reconstituted with either sterile water or D5W (5% dextrose in water) to give a final concentration of 1 mg in 1 cc. Glucagon can be administered intravenously (IV), intraosseously (IO), intramuscularly (IM), subcutaneously (SQ), or intranasally (IN). Glucagon is assigned to the pregnancy category B, therefore usage during pregnancy should be considered when the benefits outweigh the potential risks. The most common side effects are nausea and vomiting, thought to be associated with the rate of IV administration. When giving high doses of Glucagon, the usage of antiemetics such as ondansetron or promethazine should be considered. Additionally some diluents packaged with Glucagon contain phenol, which in high doses can be toxic. Therefore, reconstitution should be done in sterile water, D5W, or normal saline.&lt;/p&gt;&lt;b&gt;Hypoglycemia&lt;/b&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;&lt;p class="MsoNormal"&gt;As this article is intended for pre-hospital providers, it is assumed that the usage of Glucagon in hypoglycemia is well understood, therefore this indication will not be explored in depth. However, pre-hospital providers may be surprised to learn that the administration of 2 mg Glucagon intranasally (IN) was shown to be as safe and efficacious as an IM administration of 1 mg. Recently the administration of drugs through the IN route has gained in popularity, the most visible of those being naloxone (Narcan). In 2009, naloxone administration via the IN route was added to the scope of practice for all levels of EMTs in North Carolina, where this author practices.&lt;/p&gt;  &lt;p&gt;Given the few side effects and complications associated with the administration of Glucagon, it would be a powerful addition to BLS providers for hypoglycemic patients in which oral glucose is not indicated. Yet the widespread adoption of intranasal Glucagon has not been seen in EMS, even though studies on intranasal Glucagon were conducted as far back as the 1980s. One potential explanation could be the relatively high cost of Glucagon. A casual and unscientific search of Internet distributors shows the average price of 1 mg Glucagon ranges from $70-150 USD. In comparison, naloxone ranges from $18-25 USD for the common pre-hospital packaging. Given the economic troubles in 2009 and 2010, it seems unlikely that the intranasal route will gain traction amongst already cash strapped BLS providers.&lt;/p&gt;&lt;p&gt;&lt;b&gt;Symptomatic Bradycardia&lt;/b&gt;&lt;/p&gt;&lt;p&gt;Beyond hyperglycemic effects, Glucagon exerts both positive chronotropic and inotropic effects on the heart through non-adrenergic receptors. Because the cardiovascular actions are orthogonal to &lt;span style="font-family:Calibri;"&gt;β&lt;/span&gt;-adrenergic receptors, it should be considered in any symptomatic bradycardia refractory to sympathomimetics or as an adjunct to sympathomimetic therapy. High-dose IV Glucagon has been shown to be effective when there is a known&lt;span style="font-family:Calibri;"&gt; β&lt;/span&gt;-blocker or Ca-channel blocker overdose.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The first consideration for EMTs when using Glucagon for a patient with suspected &lt;span style="font-family:Calibri;"&gt;β&lt;/span&gt;-blocker or Ca-channel blocker overdose is the extreme dosage to be administered. A loading dose of 2-10 mg is cited by the literature, followed by 1-5 mg/hr maintenance infusions titrated to effect if hypotension and bradycardia persist. The service at which the author works only carries two 1 mg Glucagon kits per ambulance, which is relatively common amongst ALS providers. Therefore, a second unit or ALS QRV should be requested for an intercept to supply additional Glucagon kits. This logistical concern obviates any on-scene treatment with Glucagon for symptomatic bradycardia, and should not delay safe and expeditious transport.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;i&gt;&lt;a href="http://sixlettervariable.blogspot.com/2010/02/common-and-uncommon-usages-of-glucagon_15.html"&gt;In part 2, we'll explore some less traditional usages of Glucagon in the field.&lt;/a&gt;&lt;/i&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;References&lt;/b&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Pollock CV: Utility of Glucagon in the Emergency Department. &lt;i&gt;J Emerg Med&lt;/i&gt; 1993; 11: 195-205.&lt;/li&gt;&lt;li&gt;Rosenfalck AM, et al: Nasal glucagon in the treatment of hypoglycaemia in type 1 (insulin-dependent) diabetic patients. &lt;i&gt;Diabetes Research and Clinical Practice&lt;/i&gt; 1992; 17: 43-50.&lt;/li&gt;&lt;li&gt;Love JN, Howell JM: Glucagon Therapy in the Treatment of Symptomatic Bradycardia. &lt;i&gt;Ann Emerg Med&lt;/i&gt; January 1997; 29:181-183.&lt;/li&gt;&lt;li&gt;American Heart Association. Part 7.3: Management of Symptomatic Bradycardia and Tachycardia. &lt;i&gt;Circulation &lt;/i&gt;2005; 112; IV-67-IV-77.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-3869814174574408399?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/3869814174574408399/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=3869814174574408399' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/3869814174574408399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/3869814174574408399'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2010/02/common-and-uncommon-usages-of-glucagon.html' title='Common and Uncommon Usages of Glucagon in the Field (Part 1)'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-1262304471918770108</id><published>2010-01-30T11:22:00.006-05:00</published><updated>2010-02-22T18:00:14.865-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Bigeminy</title><content type='html'>&lt;p&gt;My last two shifts have included patient's with bigeminal premature ventricular contractions (PVC). Bigeminy is a condition where every other beat does not come from the primary pacemaker. In both cases my patients had sinus rhythm with bigeminal PVCs. One of the patient's had multifocal PVCs. The other had unifocal PVCs during the bigeminy, but had multifocal couplet PVCs later (I unfortunately did not get a strip with that). As you can imagine, those are some sick hearts.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;My concern would be if the rate of perfusing beats is not high enough to support hemodynamics. Surprisingly, even though neither patient's PVCs were perfusing they were both stable with these rhythms, even though the perfusing rate was quite bradycardic. One of these was the patient's normal rhythm, and thankfully I was made aware of this before I treated a problem that did not exist!&lt;/p&gt;&lt;br /&gt;&lt;b&gt;60yo F C/C Abdominal Pain&lt;/b&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XnHVrPnrx7o/S2RebT4qkrI/AAAAAAAABqI/gXkSTnYYPQE/s1600-h/ECG+-+II+III+aVF+-+20100117+-+60yo+F+-+Abd+pain+-+2+-+sm.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 101px;" src="http://2.bp.blogspot.com/_XnHVrPnrx7o/S2RebT4qkrI/AAAAAAAABqI/gXkSTnYYPQE/s400/ECG+-+II+III+aVF+-+20100117+-+60yo+F+-+Abd+pain+-+2+-+sm.jpg" alt="" id="BLOGGER_PHOTO_ID_5432570873803084466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;55yo M C/B SOB w/ exertion&lt;/b&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XnHVrPnrx7o/S2Re9cm70QI/AAAAAAAABqQ/vyXr0RZcR04/s1600-h/3L+ECG+-+20100127+-+55yo+M+-+SOB+-+small.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 134px;" src="http://3.bp.blogspot.com/_XnHVrPnrx7o/S2Re9cm70QI/AAAAAAAABqQ/vyXr0RZcR04/s400/3L+ECG+-+20100127+-+55yo+M+-+SOB+-+small.jpg" alt="" id="BLOGGER_PHOTO_ID_5432571460260188418" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-1262304471918770108?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/1262304471918770108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=1262304471918770108' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/1262304471918770108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/1262304471918770108'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2010/01/bigeminy.html' title='Bigeminy'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_XnHVrPnrx7o/S2RebT4qkrI/AAAAAAAABqI/gXkSTnYYPQE/s72-c/ECG+-+II+III+aVF+-+20100117+-+60yo+F+-+Abd+pain+-+2+-+sm.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-8486555380362611839</id><published>2010-01-19T13:54:00.002-05:00</published><updated>2010-01-19T13:56:12.547-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tfs'/><title type='text'>TFS and Baseless Merging</title><content type='html'>Whoever thought it was a good idea to not allow sane branching and merging and introduced in its stead "baseless merges," should probably never work on a source control project again.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm now relegated to losing all sorts of history in order to stage complex feature branches by just using &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;.patch&lt;/span&gt; files. Thanks for wasting my afternoon. Yet another reason to use TRAC/SVN instead of TFS.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-8486555380362611839?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/8486555380362611839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=8486555380362611839' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/8486555380362611839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/8486555380362611839'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2010/01/tfs-and-baseless-merging.html' title='TFS and Baseless Merging'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-4238166452079609424</id><published>2009-12-16T14:25:00.002-05:00</published><updated>2009-12-16T14:27:34.907-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Passed NREMT-P!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XnHVrPnrx7o/Syk0hNcy9WI/AAAAAAAABok/V_qb1-uNjHI/s1600-h/nremt-paramedic.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 400px; height: 186px;" src="http://2.bp.blogspot.com/_XnHVrPnrx7o/Syk0hNcy9WI/AAAAAAAABok/V_qb1-uNjHI/s400/nremt-paramedic.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5415917772040500578" /&gt;&lt;/a&gt;&lt;br /&gt;I'm finally done with every certification I need. Seriously the alphabet soup I've taken seemed to never end! Thanks again to everyone who has helped, I wouldn't be here without all of the support.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-4238166452079609424?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/4238166452079609424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=4238166452079609424' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4238166452079609424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4238166452079609424'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2009/12/passed-nremt-p.html' title='Passed NREMT-P!'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_XnHVrPnrx7o/Syk0hNcy9WI/AAAAAAAABok/V_qb1-uNjHI/s72-c/nremt-paramedic.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-895173129455834352</id><published>2009-12-11T13:24:00.002-05:00</published><updated>2009-12-11T13:25:12.164-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Code Review Find</title><content type='html'>&lt;blockquote&gt;&lt;tt&gt;double PIE = 3.141592654;&lt;/tt&gt;&lt;/blockquote&gt;No, that code did not pass the review.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-895173129455834352?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/895173129455834352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=895173129455834352' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/895173129455834352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/895173129455834352'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2009/12/code-review-find.html' title='Code Review Find'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-6272057433379142882</id><published>2009-10-26T16:26:00.004-04:00</published><updated>2009-10-30T09:43:41.664-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Passed!</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XnHVrPnrx7o/SurtfLqWdMI/AAAAAAAABnw/JDUyIhb30Kk/s1600-h/paramedic.png"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 400px; height: 199px;" src="http://3.bp.blogspot.com/_XnHVrPnrx7o/SurtfLqWdMI/AAAAAAAABnw/JDUyIhb30Kk/s400/paramedic.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5398388223319110850" /&gt;&lt;/a&gt;&lt;br /&gt;I passed the North Carolina EMT-Paramedic exam! It has been three years since I started my journey into EMS, one I would recommend to anyone looking for a rewarding and challenging volunteering field. Thanks to &lt;a href="http://health.groups.yahoo.com/group/ekg_club/"&gt;all&lt;/a&gt; &lt;a href="http://hqmeded-ecg.blogspot.com/"&gt;the&lt;/a&gt; &lt;a href="http://ems12lead.blogspot.com/"&gt;folks&lt;/a&gt; &lt;a href="http://paramedicine101.blogspot.com/"&gt;online&lt;/a&gt; who've helped me along the way with Cardiology, I wouldn't have scored 100% on rhythms without you guys.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update:&lt;/b&gt; my certification went active today. So I'm officially a North Carolina EMT-Paramedic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-6272057433379142882?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/6272057433379142882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=6272057433379142882' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/6272057433379142882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/6272057433379142882'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2009/10/passed.html' title='Passed!'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_XnHVrPnrx7o/SurtfLqWdMI/AAAAAAAABnw/JDUyIhb30Kk/s72-c/paramedic.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-8178060368758093085</id><published>2009-09-28T11:12:00.004-04:00</published><updated>2009-10-01T16:51:28.954-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Long Time no Post</title><content type='html'>Tuesday marks the end of my initial education as a Paramedic. In preparation I have been studying with books, exam preparations, notes, other students, etc. I will say however, that there is one common thread between the practice exams: bogus questions.&lt;br /&gt;&lt;br /&gt;These are questions which make no attempt to assess critical thinking or evaluate knowledge in a certain area, they attempt solely to trick the student. After enough of these trick questions, the student becomes ingrained in finding the catch. Answering the questions becomes a game and not a test of ones knowledge. For instance (not an actual question, just an example):&lt;br /&gt;&lt;br /&gt;A patient complaining of cephalgia would most likely:&lt;ol&gt;&lt;br /&gt;&lt;li&gt;Have a headache&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Have an ear ache&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Have clubbed fingers&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Be a dick&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;If you answered, "have a headache," congratulations, you know useless medical trivia and probably have little clinical skills. If you answered, "be a dick," you possess a high degree of critical thinking skills. What patient in the world is going to complain about &lt;b&gt;"cephalgia"&lt;/b&gt;, unless they're a raging...well, you know what.&lt;br /&gt;&lt;br /&gt;If the question asked, "which of the following symptoms would be cause for concern in a patient with an acute onset of hypertension," and "Headache (cephalgia)" was the answer, the question would not only test clinical knowledge, but teach the student a (useless) medical term for a headache. If the answer was given only as &lt;b&gt;cephalgia&lt;/b&gt;, then the question would test for nothing.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Update:&lt;/b&gt; I passed my paramedic final and will take the North Carolina EMT-Paramedic exam October 23rd. I hope to complete the National Registry testing in November.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-8178060368758093085?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/8178060368758093085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=8178060368758093085' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/8178060368758093085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/8178060368758093085'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2009/09/long-time-no-post.html' title='Long Time no Post'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-9152620576773784</id><published>2009-07-13T12:38:00.004-04:00</published><updated>2010-02-16T23:30:35.659-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stackoverflow'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Replacing Invalid Characters v. Performance</title><content type='html'>&lt;div&gt;It appears a large amount of StackOverflow posts focus on eeking out an impossible amount of performance for rather mundane tasks. Sometimes, when you read the question, you can't help but wonder why they even want to improve the performance of the given algorithm. The odds are most performance enhancements would come at the expense of readability. However, that does not mean it isn't worth taking a look at--especially if you're bored and don't want to do something else.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I had some fun with the following question: &lt;a href="http://stackoverflow.com/questions/1120198/most-efficient-way-to-remove-special-characters-from-string"&gt;Most efficient way to remove special characters from string&lt;/a&gt;. Just from looking at the specification given, my guess is this is going to get called maybe 100 times at the most. O(f(n)) where n is 100 is boring. Even more interesting is that the given solution from the poster is already quite good (barring a logic error). Here is the OP's solution without any logical errors:&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;public static string RemoveSpecialCharacters(string str)&lt;br /&gt;{&lt;br /&gt;    StringBuilder sb = new StringBuilder();&lt;br /&gt;    for (int i = 0; i &amp;lt; str.Length; ++i)&lt;br /&gt;    {&lt;br /&gt;        if ((str[i] &gt;= '0' &amp;amp;&amp;amp; str[i] &amp;lt;= '9')&lt;br /&gt;            || (str[i] &gt;= 'A' &amp;amp;&amp;amp; str[i] &amp;lt;= 'Z')&lt;br /&gt;            || (str[i] &gt;= 'a' &amp;amp;&amp;amp; str[i] &amp;lt;= 'z')&lt;br /&gt;            || (str[i] == '.' || str[i] == '_'))&lt;br /&gt;            sb.Append(str[i]);&lt;br /&gt;    }&lt;br /&gt;    return sb.ToString();&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div&gt;As a frequent code reviewer, I think this method looks great. In fact, running this method against a corpus of 10000 randomly generated lines with 4096 characters executes in 0.0479ms/string. This is very fast. The simplest improvement would be to prefill the StringBuilder to str.Length characters. This results in a new runtime of 0.0442ms/string. Now we're cooking with gas!&lt;/div&gt;&lt;br /&gt;&lt;div&gt;A few posters suggested regular expressions. Well, the naive approach (uncompiled) takes 0.489ms/string which is 10 times slower. Making the regular expression compiled takes 0.363ms/string, still 8 times slower. However, take a look at the new code you must maintain:&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;static Regex replacer = new Regex(@"[^a-zA-Z0-9_.]+", RegexOptions.Compiled);&lt;br /&gt;public static string RemoveSpecialCharacters(string str)&lt;br /&gt;{&lt;br /&gt;    return replacer.Replace(str, String.Empty);&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div&gt;Ok, so a big drop in performance, but perhaps a big gain in readability and maintainability. However, the OP's algorithm is surely very simple to read. So the regular expressions make sense if this method is going to be called a few times on small strings.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Another suggestion was to use foreach rather than a for-loop. This results in another minor speedup to 0.0412ms/string. The last of the improvements suggested was to go with a lookup table. Personally it is my least favorite because it will be less readable and maintainable. C# 3.0 can help us some, using LINQ to improve those.&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;static bool[] allowedChars = new List&amp;lt;bool&amp;gt;(&lt;br /&gt;    from ii in Enumerable.Range(0, 128)&lt;br /&gt;    let c = (char)ii&lt;br /&gt;    select (c &gt;= '0' &amp;amp;&amp;amp; c &amp;lt;= '9')&lt;br /&gt;        || (c &gt;= 'A' &amp;amp;&amp;amp; c &amp;lt;= 'Z')&lt;br /&gt;        || (c &gt;= 'a' &amp;amp;&amp;amp; c &amp;lt;= 'z')&lt;br /&gt;        || (c == '.')&lt;br /&gt;        || (c == '_')&lt;br /&gt;).ToArray();&lt;br /&gt;&lt;br /&gt;public static string RemoveSpecialCharacters(string str)&lt;br /&gt;{&lt;br /&gt;    StringBuilder sb = new StringBuilder(str.Length);&lt;br /&gt;    for (int ii = 0; ii &amp;lt; str.Length; ++ii)&lt;br /&gt;    {&lt;br /&gt;       if (str[ii] &amp;lt; allowedChars.Length &amp;&amp; allowedChars[str[ii]])&lt;br /&gt;           sb.Append(str[ii]);&lt;br /&gt;    }&lt;br /&gt;    return sb.ToString();&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div&gt;Take a look at how many extra lines of code we have added. This solution may be the fastest so far, at 0.0399ms/string, but it is also bordering on the ugliest. However, we haven't even touched on the simplest improvement that can be made which results in the largest absolute increase in performance. &lt;a href="http://stackoverflow.com/questions/1120198/most-efficient-way-to-remove-special-characters-from-string/1120407#1120407"&gt;If you replace the StringBuilder with a char[] a 100% speedup can be achieved&lt;/a&gt;!&lt;/div&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;public static string RemoveSpecialCharacters(string str)&lt;br /&gt;{&lt;br /&gt;    int idx = 0;&lt;br /&gt;    char[] chars = new char[str.Length];&lt;br /&gt;    foreach (char c in str)&lt;br /&gt;    {&lt;br /&gt;        if ((c &gt;= '0' &amp;amp;&amp;amp; c &amp;lt;= '9')&lt;br /&gt;            || (c &gt;= 'A' &amp;amp;&amp;amp; c &amp;lt;= 'Z') &lt;br /&gt;            || (c &gt;= 'a' &amp;amp;&amp;amp; c &amp;lt;= 'z') &lt;br /&gt;            || (c == '.') || (c == '_'))&lt;br /&gt;        {&lt;br /&gt;            chars[idx++] = c;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    return new string(chars, 0, idx);&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;div&gt;This method runs in a blazing 0.0299ms/string, is simple to read, is easy to maintain, and is highly performant. &lt;span style="font-weight:bold;"&gt;We have a winner folks.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-9152620576773784?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/9152620576773784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=9152620576773784' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/9152620576773784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/9152620576773784'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2009/07/replacing-invalid-characters-v.html' title='Replacing Invalid Characters v. Performance'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-6902697362997657719</id><published>2009-04-07T16:38:00.005-04:00</published><updated>2009-04-10T00:40:25.159-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Shortness of Breath x 2 days</title><content type='html'>Age, circumstance, and anything else I feel like has been changed.&lt;br /&gt;&lt;blockquote&gt;This unit was dispatched to a 76yo M C/C SOB x2 days. Pt found seated in chair, w/ patent airway, no obvious respiratory distress, and no apparent life threatening airway. Pt states concern for pneumonia. Pt denies CP. Rhonchi bilateral lower lobes. HR 62, BP 128/70, RR 18, SaO2 97% r/a. Placed on O2 @ 2lpm via NC. SOB gradual w/o pain, worse with exertion, better with rest, "can't catch breath." Pt has no PMD, denies any prior PMD visits, no meds, NKDA. Pt seated fowlers on stretcher, seatbelts secured, taken via stretcher to ambulance. 3-lead monitor shows sinus brady, frequent PVCs, ST elev II/III. 12L ECG  shows 2mm ST elev II/III/aVF w/ reciprocal changes I/aVL, ST depression V2-V5. Pt vital signs unchanged, denies CP. Feels "better" w/ O2. 4x 81mg ASA PO. Code STEMI alert given to receiving hospital, no questions. Care transferred to Cath Lab, written and verbal report given to receiving nurse.&lt;/blockquote&gt;We got to watch the cath lab at work:&lt;ul&gt;&lt;li&gt;RCA: right marginal artery occlusion&lt;/li&gt;&lt;li&gt;LAD: diagonal artery occlusion&lt;/li&gt;&lt;li&gt;CX: complete circumflex occlusion&lt;/li&gt;&lt;/ul&gt;No stents placed, scheduled for CABG.&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XnHVrPnrx7o/Sd7NXODKahI/AAAAAAAABPI/oajBQ_PAv3M/s1600-h/ECG+-+12L+-+SOB.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 309px; border: 1px solid black;" src="http://3.bp.blogspot.com/_XnHVrPnrx7o/Sd7NXODKahI/AAAAAAAABPI/oajBQ_PAv3M/s400/ECG+-+12L+-+SOB.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5322917608390552082" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-6902697362997657719?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/6902697362997657719/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=6902697362997657719' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/6902697362997657719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/6902697362997657719'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2009/04/shortness-of-breath-x-2-days.html' title='Shortness of Breath x 2 days'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_XnHVrPnrx7o/Sd7NXODKahI/AAAAAAAABPI/oajBQ_PAv3M/s72-c/ECG+-+12L+-+SOB.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-2283332537887017888</id><published>2009-03-24T15:11:00.004-04:00</published><updated>2009-03-24T16:13:39.467-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>A Difference in Education</title><content type='html'>You learn interesting things about yourself based on why you miss questions on a test. For instance, on Monday night it became apparent that I have the biochemistry education of a &lt;b&gt;lower order ape&lt;/b&gt;. I can speak in big medical terms, but fundamentally my understanding is along the lines of, "air goes in and out, blood goes round and round."&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This isn't necessarily a bad thing, my degree is in computer science. So as a programmer, I find that my understanding is based on my rough implementations in code rather than the actual biochemical mechanisms. This is useful in terms of my own understanding, but hardly common ground with other students.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I think I need to take some biochemistry courses so I'm not dragging my knuckles on the floor of the ambulance.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-2283332537887017888?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/2283332537887017888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=2283332537887017888' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/2283332537887017888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/2283332537887017888'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2009/03/difference-in-education.html' title='A Difference in Education'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-9152827775797832813</id><published>2009-03-03T10:51:00.003-05:00</published><updated>2009-03-03T11:08:47.674-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Exceptions and Constructors</title><content type='html'>You should never include any work in a constructor which may leave the object in an inconsistant state. Constructors should be atomic and consistant. You should avoid having side effects in a constructor. However, sometimes you cannot avoid doing additional work in a constructor.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For example, you are designing a stream like class which acquires an unmanaged resource in the constructor. Following &lt;a href="http://en.wikipedia.org/wiki/Resource_acquisition_is_initialization"&gt;RAII&lt;/a&gt;, you implement the necessary logic to clean up your unmanaged resource in &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Dispose&lt;/span&gt; and &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Finalize&lt;/span&gt;. Given the following pseudo-code, what is a possible error condition we are not current designed to handle:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;pre&gt;public MyType()&lt;br /&gt;{&lt;br /&gt;    Check.Invariant(argumentInvariant1);&lt;br /&gt;    // ...&lt;br /&gt;    Check.Invariant(argumentInvariantN);&lt;br /&gt;&lt;br /&gt;    // 1. ACQUIRE&lt;br /&gt;    this.AcquireUnmanagedResource();&lt;br /&gt;&lt;br /&gt;    // 2. Set up our base properties from the resource&lt;br /&gt;    this.RetrieveConfiguration();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;~MyType()&lt;br /&gt;{&lt;br /&gt;    this.Dispose(false);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void Dispose()&lt;br /&gt;{&lt;br /&gt;    this.Dispose(true);&lt;br /&gt;    GC.SupressFinalize(this);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void Dispose(bool disposing)&lt;br /&gt;{&lt;br /&gt;    if (!this.isDisposed)&lt;br /&gt;    {&lt;br /&gt;        // RELEASE&lt;br /&gt;        this.ReleaseUnmanagedResource();&lt;br /&gt;&lt;br /&gt;        if (disposing)&lt;br /&gt;        {&lt;br /&gt;            this.DisposeManagedResources();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div&gt;What would happen if #2 threw an exception? Well, it is more obvious in this example than in most code in the wild, but our &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Dispose&lt;/span&gt; or &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Finalize&lt;/span&gt; will not be called! Our unmanaged resource will not be released, and we will be leaked.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;An appropriate solution would, perhaps, be the following modification to the constructor:&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;pre&gt;public MyType()&lt;br /&gt;{&lt;br /&gt;    Check.Invariant(argumentInvariant1);&lt;br /&gt;    // ...&lt;br /&gt;    Check.Invariant(argumentInvariantN);&lt;br /&gt;&lt;br /&gt;    try&lt;br /&gt;    {&lt;br /&gt;        // 1. ACQUIRE&lt;br /&gt;        this.AcquireUnmanagedResource();&lt;br /&gt;&lt;br /&gt;        // 2. Set up our base properties from the resource&lt;br /&gt;        this.RetrieveConfiguration();&lt;br /&gt;    }&lt;br /&gt;    catch(Exception)&lt;br /&gt;    {&lt;br /&gt;        // RELEASE&lt;br /&gt;        this.Dispose(true);&lt;br /&gt;&lt;br /&gt;        throw; // propagate the exception&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;Now, if #2 should fail we will release the unmanaged resource and not leak anything. Keep in mind this will require a &lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;Dispose&lt;/span&gt; method which is resistant to an inconsistant object state. However, the &lt;a href="http://msdn.microsoft.com/en-us/library/b1yfkh5e.aspx"&gt;design contract for &lt;/a&gt;&lt;span class="Apple-style-span"  style="font-family:'courier new';"&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/b1yfkh5e.aspx"&gt;IDisposable&lt;/a&gt;&lt;/span&gt; basically requires this anyways.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-9152827775797832813?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/9152827775797832813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=9152827775797832813' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/9152827775797832813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/9152827775797832813'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2009/03/exceptions-and-constructors.html' title='Exceptions and Constructors'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-6756649606791241760</id><published>2009-02-17T10:13:00.003-05:00</published><updated>2009-02-17T10:21:46.758-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Basics and Paramedics</title><content type='html'>Recently I was asked what the difference was between an EMT-Basic and a Paramedic. It is simple, Basics have the ground beneath their feet, four walls around them, and a roof above their head. More importantly to the Basic, and to their patient, is the door. Behind this door is a Paramedic. A Paramedic who doesn't know if they are on the ground or falling to meet the ground. They really only have the walls they've put up around them. At least at this point, I can't fathom the ceiling for a Paramedic. The responsibilities and expectations are limitless when looking through the door at the Basic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-6756649606791241760?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/6756649606791241760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=6756649606791241760' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/6756649606791241760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/6756649606791241760'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2009/02/basics-and-paramedics.html' title='Basics and Paramedics'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-4729629324073048384</id><published>2009-02-16T09:55:00.003-05:00</published><updated>2009-02-16T10:39:46.234-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>C# XML Documentation Guide</title><content type='html'>Today I found what is perhaps the most comprehensive guide to &lt;a href="http://www.dynicity.com/downloads/default.aspx"&gt;writing good C# XML Documentation&lt;/a&gt;. Many thanks to the Dynicity guys for producing this.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-4729629324073048384?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/4729629324073048384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=4729629324073048384' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4729629324073048384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4729629324073048384'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2009/02/c-xml-documentation-guide.html' title='C# XML Documentation Guide'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-4306178104866462861</id><published>2009-02-07T15:31:00.006-05:00</published><updated>2009-02-10T22:47:02.364-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Self-inflicted, unintentional GSW</title><content type='html'>&lt;div&gt;You can imagine the thought process associated with being dispatched to your first gun shot wound. The narrative has been altered to change specificity and situation.&lt;/div&gt;&lt;div&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;This unit was dispatched to a 32yo male w/  self-inflicted unintentional GSW x1 to the hand. Additional information from  caller while en route informed pt conscious and alert. Dispatch notified LEO, en route. Arrived on scene to find two bystanders in an open field. Pt found sitting in passenger seat of van with ~5cm hole in the  front windshield. No gun visible. LEO arrived ~2 min after EMS, secured .40cal  handgun. Pt states he reached for the handgun on the floorboard of the van and  it went off accidentally. Pt had a patent airway, no respiratory distress, and  displayed his L hand which had no apparent active bleeding. Rapid trauma exam  revealed no life threatening injuries. &amp;lt;5cc blood estimated lost. L hand had ~1cm entrance wound on anterior palmar aspect ~3cm from medial border and ~2cm  from wrist. ~1cm exit wound on medial border ~3cm from entrance and ~4cm from wrist. Powder burns noted at entrance wound. Skin warm/dry, pupils sluggish, pulse fast/bounding. Pt refused further physical examination. Wound irrigated with sterile water, bandaged, wrapped with gauze. Pt refused further treatment. Pt refused transport. Pt advised of treatment/transport options and injury severity. Pt signed refusal. LEO witnessed refusal.&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-4306178104866462861?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/4306178104866462861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=4306178104866462861' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4306178104866462861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4306178104866462861'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2009/02/self-inflicted-unintentional-gsw.html' title='Self-inflicted, unintentional GSW'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-4828603085030512934</id><published>2009-01-18T11:46:00.003-05:00</published><updated>2009-01-18T12:21:42.410-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Paramedic Clinicals</title><content type='html'>So Friday was the first of many clinical shifts (500 hours total) I will be doing as a Paramedic student. My patients ranged in age from 11 to 92, with problems ranging from fractures to overdoses to a &lt;a href="http://en.wikipedia.org/wiki/Deep_vein_thrombosis"&gt;suspected DVT&lt;/a&gt;. I triaged patients, assessed vitals, started IV's, pushed medications, wiped asses, and did everything else I could find to do.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;One aspect of our clinical time is a state requirement that we accomplish a given number of procedures. This is both a good and a bad thing. You want your certified Paramedics to be useful when they get their card. You also want your new Paramedics to be more than just some monkey starting your IV. But when you take those requirements and add to it a finite amount of patients and a finite amount of clinical time, an obvious problem is created. Any economist will tell you that the students will apply game theory to patient care, asking the question, "what interventions can I use," rather than, "what interventions, &lt;span class="Apple-style-span" style="font-style: italic;"&gt;if any&lt;/span&gt;, are appropriate".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;More players enter the game when you show your preceptor the clinical guidelines which include these requirements. Suddenly, you have a proxy, rummaging through charts looking for flags indicating a required intervention! This isn't necessarily a bad thing, I obviously need to be competent at starting IV's, administering medication, birthing children, et cetera. I just should not be particularly concerned about only having 500 hours to accomplish X number of IV starts, Y medication administrations, Z child births, et cetera ad nauseam.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The state clinical requirements should make the student more concerned with the academic approach, starting with patient assessment and ending with a clear and organized treatment plan. It shouldn't matter if I'm the one providing any required interventions, just that I'm able to provide any appropriate intervention when required.&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So you can see why I'd find it funny that my first IV stick as a medic student was a heavily tattooed habitual IV drug user requiring &lt;a href="http://www.americanheart.org/presenter.jhtml?identifier=4477"&gt;cardiac blood labs&lt;/a&gt;. He was nearly devoid of useful veins and definately required blood drawn. A disgustingly green paramedic student tends to fall towards the bottom of the list of people you'd like performing this procedure. But not being one to avoid a challenge, I tried to follow some scar tissue to what &lt;span class="Apple-style-span" style="font-style: italic; "&gt;felt&lt;/span&gt; like a vein, but my angle of attack was too high and I nicked and rolled it.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Swiiing and a miss.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Even with a little extra traction and some fancy needle movement I couldn't establish a patent line. The patient wisely asked that the nurse try the next stick, due to that being the only vein we could find sans a &lt;a href="http://upload.wikimedia.org/wikipedia/commons/8/88/Gray573.png"&gt;vein running along his thumb&lt;/a&gt;. I'm sure the fact that my shirt said &lt;span class="Apple-style-span" style="font-style: italic; "&gt;EMS Intern&lt;/span&gt; on it played no small role in his decision to ask that somebody else make the try.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My mind is still debating if there was more learned attempting his IV or reading his ECG.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-4828603085030512934?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/4828603085030512934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=4828603085030512934' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4828603085030512934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4828603085030512934'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2009/01/paramedic-clinicals.html' title='Paramedic Clinicals'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-6720241549722254353</id><published>2008-12-22T10:24:00.003-05:00</published><updated>2008-12-22T10:46:09.619-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>California Supreme Court Redefines Good Samaritan</title><content type='html'>I was fairly shocked to learn the normally reasonable &lt;a href="http://roguemedic.blogspot.com/2008/12/california-good-samaritans-hunted-to.html"&gt;California Supreme Court  botch a case regarding Good Samaritan laws&lt;/a&gt;. An individual--who had been drinking and smoking marijuana--rendered aid at a motor vehicle accident pulling the driver from the allegedly smoking car. The driver suffered traumatic injuries to her liver, requiring surgery, and to her spine. Secondary to either the accident or the extrication, the driver suffered paraplegia and brought a negligence suit against the individual who had extricated her from the vehicle.&lt;div&gt;&lt;br /&gt;&lt;div&gt;At trial, the original court agreed the defendant was covered under the Good Samaritan laws, as would be expected, however, on appeal this decision was overturned. The appeals court found that the statute covers only &lt;a href="http://www.courtinfo.ca.gov/opinions/documents/S152360.PDF"&gt;"emergency &lt;/a&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;a href="http://www.courtinfo.ca.gov/opinions/documents/S152360.PDF"&gt;medical &lt;/a&gt;&lt;/span&gt;&lt;a href="http://www.courtinfo.ca.gov/opinions/documents/S152360.PDF"&gt;care"&lt;/a&gt; (&lt;span class="Apple-style-span" style="font-style: italic; "&gt;ed: original emphasis&lt;/span&gt;) and not the actions taken by the defendant. Eventually the appeals reached the state supreme court, and the court found in favor of the plaintiff agreeing with the appeals court's finding that the care provided by the defendant--removing the plaintiff from her vehicle--was inconsistant with the language and intent of the applicable Good Samaritan statutes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Huh?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Somehow, somewhere, the California Supreme Court has forgotten that &lt;span class="Apple-style-span" style="font-style: italic;"&gt;removing your patient from harms way&lt;/span&gt; is the first step in patient care. Well okay, it comes after your safety, your partner's safety, and any bystander's safety (scene safe? BSI?). Still, if a patient is in a burning car, the first thing to do is &lt;span class="Apple-style-span" style="font-style: italic;"&gt;remove the patient from the burning car&lt;/span&gt;. You cannot be expected to provide emergency medical care if the scene is not safe for you, your partner, or your patient. It stands to reason then, that &lt;span class="Apple-style-span" style="font-weight: bold;"&gt;the most fundamental form of Basic Life Support is removing your patient from danger&lt;/span&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What the California Supreme Court has done with their overly pedantic finding is to redefine a Good Samaritan and to change the rules of the game. The defendant in this case probably should be sued for negligence given all of the other facts in the case, however, they shouldn't be exempt from Good Samaritan laws merely because of a &lt;span class="Apple-style-span" style="font-style: italic; "&gt;language technicality&lt;/span&gt;.&lt;span class="Apple-style-span" style="font-style: italic; "&gt; &lt;/span&gt;People are already hesitant enough to provide bystander care with how lawsuit happy our society is, and now people in California have even less of a reason to provide care. Hopefully the legislature will iron this issue out in the new year.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-6720241549722254353?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/6720241549722254353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=6720241549722254353' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/6720241549722254353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/6720241549722254353'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2008/12/california-supreme-court-redefines-good.html' title='California Supreme Court Redefines Good Samaritan'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-1276931592616965639</id><published>2008-12-18T12:30:00.003-05:00</published><updated>2008-12-18T12:52:25.964-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Wound Care and Non-Adherent Dressings</title><content type='html'>On our ambulance, the two least used forms of dressings are occlusive dressings and non-adherent dressings. It is easy to explain why we don't use occlusive dressings (&lt;span class="Apple-style-span" style="font-style: italic;"&gt;ed: sucking chest wounds, while popular on ER, are NOT the mainstay of our site EMS&lt;/span&gt;), but it is a little bit harder to explain why we don't use non-adherent dressings often.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Typical wound care for an EMT-Basic consists of slapping a stack of 2x2, 3x3, or 4x4 gauze pads on the wound while applying direct pressure. If we have other things to do we'll ask the patient to hold the gauze, or tape it down. I can't ever recall ever using a non-adherent dressing or being asked for one; moreover, our wound care protocols do not give mention to them. Interestingly enough, before yesterday I probably would have been unable to give an indication for a non-adherent dressing without a little bit of thought.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Nothing could teach me the primary indication of a non-adherent dressing better than when I injured my knee yesterday. Just two small gouges, nothing big. I irrigated and debrided the wound, applied a 2x2" gauze, and secured the bandage with 1" cloth tape.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When I went to take a look at the wound that night, I was somewhat suprised to find the gauze had become part of the clot. I was even more supprised at the level of pain I was confronted with while removing the gauze-clot. The woven gauze had to be removed one strand at a time, even after applying warm water. It was at this point I had an epiphany.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XnHVrPnrx7o/SUqMryNrBGI/AAAAAAAABOY/qGLmBLwyT54/s1600-h/08-01-15-01.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 200px; height: 163px;" src="http://3.bp.blogspot.com/_XnHVrPnrx7o/SUqMryNrBGI/AAAAAAAABOY/qGLmBLwyT54/s200/08-01-15-01.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5281188196886709346" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;My jump bag contains 4x4" non-adherent dressings that, surmising from their name, would not adhere to my wound like the gauze had. Sure enough, after cutting down the dressing to form a smaller 2x2" form, I applied the non-adherent dressing under a 2x2" gauze dressing, and taped the new and improved bandage down. Removal this morning was pain free, and further more I did not have to break any clots that had formed!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;It only takes 5 seconds of googling to find that &lt;a href="http://www.jcn.co.uk/journal.asp?MonthNum=08&amp;amp;YearNum=2001&amp;amp;Type=backissue&amp;amp;ArticleID=380"&gt;everyone from studies, to nurses, to patients emphatically support non-adherent dressings for wound care&lt;/a&gt;. Thanks to a personal lesson in pain, my own protocol for wound care will now include a non-adherent dressing for any wound (which will produce an exudate) upon which a dry sterile dressing will sit.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-1276931592616965639?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/1276931592616965639/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=1276931592616965639' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/1276931592616965639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/1276931592616965639'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2008/12/wound-care-and-non-adherent-dressings.html' title='Wound Care and Non-Adherent Dressings'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_XnHVrPnrx7o/SUqMryNrBGI/AAAAAAAABOY/qGLmBLwyT54/s72-c/08-01-15-01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-6565621602047171582</id><published>2008-11-09T14:35:00.009-05:00</published><updated>2008-12-09T23:05:25.861-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wpf'/><category scheme='http://www.blogger.com/atom/ns#' term='linq'/><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Studying Paramedicine as a Software Engineer</title><content type='html'>&lt;div&gt;Paramedic school has been grueling giving the &lt;a href="http://www.answers.com/concomitant"&gt;concomitant &lt;/a&gt;(bordering on &lt;span class="Apple-style-span" style="font-style: italic;"&gt;comorbid&lt;/span&gt;) factor of work. However, that will be my last complaint on that because as a general rule, when I want to do something, I go and do it. We've finished anatomy and physiology, pathophysiology, medicolegal concerns, various introductory topics, and most recently pharmocology.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We had to turn in cards on 72 drugs (of the 129 paramedics in NC could give), and I decided to make life easier for myself using a small program. LINQ-to-XML plus WPF (and some regular expressions to parse human readable dosages) allowed me to rapidly transcribe all of the useful information into an XML format. I then put together a quick XSLT file to make an OOXML file that I could print and paste to 3x5 index cards (&lt;span class="Apple-style-span" style="font-style: italic;"&gt;ed&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;: I left off side effects and had to add those by hand, wraaa!&lt;/span&gt;). Did I mention the program quizzes me on trade/generic names and pharmacological class? I'll try and release the quizzing features as a webpage at some point, however, my studies come first.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_XnHVrPnrx7o/SRc_JmCgTEI/AAAAAAAABNs/X3is5Qu1uIU/s1600-h/drugReference.xml.example.png"&gt;&lt;img style="margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 283px; height: 275px;" src="http://4.bp.blogspot.com/_XnHVrPnrx7o/SRc_JmCgTEI/AAAAAAAABNs/X3is5Qu1uIU/s320/drugReference.xml.example.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5266747723295509570" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_XnHVrPnrx7o/SRc_zsIs8zI/AAAAAAAABN0/q-vBpBmw2To/s1600-h/drugCards.docx.example.png"&gt;&lt;img style="margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 203px; height: 189px;" src="http://4.bp.blogspot.com/_XnHVrPnrx7o/SRc_zsIs8zI/AAAAAAAABN0/q-vBpBmw2To/s320/drugCards.docx.example.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5266748446486623026" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Right now we're having medical math beaten into us, which isn't particularly hard for those of us with strong mathematics backgrounds (ed: except when you suck at basic math). However, I noticed that many students had a hard time connecting the action of calculating a dosage with the mathematics to do the calculation. I put together a presentation to help bridge that gap, &lt;a href="http://christopher.watford.googlepages.com/MedicalMathVisualized.pptx"&gt;"Visualizing Medical Math" (PPTX)&lt;/a&gt;. Hopefully this will help folks who are struggling with medical math.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;(ed: for those of you without PowerPoint 2007 or access to a viewer, &lt;/span&gt;&lt;a href="http://christopher.watford.googlepages.com/MedicalMathVisualized.pdf"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;"Visualizing Medical Math" PDF&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;).&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-6565621602047171582?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/6565621602047171582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=6565621602047171582' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/6565621602047171582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/6565621602047171582'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2008/11/paramedicine.html' title='Studying Paramedicine as a Software Engineer'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_XnHVrPnrx7o/SRc_JmCgTEI/AAAAAAAABNs/X3is5Qu1uIU/s72-c/drugReference.xml.example.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-4928452167607553484</id><published>2008-10-21T08:16:00.003-04:00</published><updated>2008-12-09T23:05:41.566-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Paramedic Student</title><content type='html'>Last night I became a paramedic student. From now until October 2009, I'll be in class three nights a week and the occasional Saturday. There are just over 30 students in our class, with a 60-40 split of EMT-Intermediates and EMT-Basics. Three students from my EMT-Basic class returned to study paramedicine, and I'm looking forward to studying with them again.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;We have homework right out the gate, which isn't suprising giving the pace of the course. I'll be posting the thousand word paper on EMS history, the future of EMS, and where I fit into it all on this blog. We also have to do cards on 129 drugs available to paramedics in the great state of North Carolina. Each card will have the generic name, trade name, mechanism of action, dosages (all dosage possibilities, adult and pediatric), indications, contraindications, and side effects. Interestingly enough, most services only carry a fraction of these for emergent care, and often only carry specialized subsets for acute care. Regardless, I'm looking forward to the pharmacology review.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, look forward to seeing more postings on my time as a paramedic student, and maybe postings on my clinicals during the new year. I refrain from posting about people I treat at work only due to the "small town" feel at work. When out in the world, I'll probably be able to write in generality.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-4928452167607553484?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/4928452167607553484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=4928452167607553484' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4928452167607553484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4928452167607553484'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2008/10/paramedic-student.html' title='Paramedic Student'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-1295249266204047659</id><published>2008-07-31T09:48:00.005-04:00</published><updated>2010-02-16T23:32:08.437-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran'/><title type='text'>Fatal error LNK1171: unable to load c2.dll</title><content type='html'>We had an interesting problem arise where linking a Release mode static library written in C with a Fortran application using the Premier Partner edition of Visual Studio that ships with Intel Visual FORTRAN 10 would die at the linking stage. This happened late in the game as the debug mode builds of the C library did not exhibit this error. To make matters worse, if users had any other version of Visual Studio with just the Intel Visual FORTRAN Compiler Integration installed, no such problems arose.&lt;br /&gt;&lt;br /&gt;Our first step was to install the Platform SDK: no joy. The second step was to manually copy the DLL's required (there are actually 3 DLL's you need) from a working install to the non-working install: success!&lt;br /&gt;&lt;br /&gt;So, what could possibly be the problem here?&lt;br /&gt;&lt;br /&gt;No amount of searching could turn up the issue, so a ticket was opened with Intel's Premier Support. Well, we should have done this from the beginning because it appears that the compiler writers themselves know a lot about the compiler toolchain; fancy that. The (relevant) response from Intel:&lt;br /&gt;&lt;blockquote&gt;c2.dll is used by the Microsoft Visual C++ compiler to perform whole-program  optimization. Might it be that this "release" C library was compiled with that  option? If so, you will require Visual C++ to be installed in order to build  using that library.&lt;br /&gt;&lt;br /&gt;My advice is that if you know you will be linking a  C library on a system with only Visual Studio Premier Partner Edition installed  that you be sure that Whole Program Optimization is disabled, as otherwise  Fortran programmers will not be able to use it.&lt;/blockquote&gt;Sure enough, disabling Whole Program Optimization on the Release mode builds of the C static library solved all of our issues.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-1295249266204047659?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/1295249266204047659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=1295249266204047659' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/1295249266204047659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/1295249266204047659'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2008/07/fatal-error-lnk1171-unable-to-load.html' title='Fatal error LNK1171: unable to load c2.dll'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-3311341439692766174</id><published>2008-07-16T18:38:00.003-04:00</published><updated>2008-12-09T22:51:25.856-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='alaska'/><title type='text'>Day 14: Denali National Park</title><content type='html'>&lt;div&gt;We're 11 miles down Alaska Highway 3 (Parks Highway) at a school library. The weather is a bit bleh so we're unable to hike at the moment. We've now gone over 6500 miles on the road and are getting ready to make our return back to North Carolina. Here are some assorted photos from the park and our ascent of Mt. Healy (4500ft).&lt;/div&gt;&lt;br /&gt;&lt;a href="http://photos-h.ak.facebook.com/photos-ak-sf2p/v308/131/78/40509369/n40509369_33557327_3443.jpg"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos-h.ak.facebook.com/photos-ak-sf2p/v308/131/78/40509369/n40509369_33557327_3443.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://photos-a.ak.facebook.com/photos-ak-sf2p/v308/131/78/40509369/n40509369_33557328_4373.jpg"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos-a.ak.facebook.com/photos-ak-sf2p/v308/131/78/40509369/n40509369_33557328_4373.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://photos-c.ak.facebook.com/photos-ak-sf2p/v308/131/78/40509369/n40509369_33557330_6245.jpg"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos-c.ak.facebook.com/photos-ak-sf2p/v308/131/78/40509369/n40509369_33557330_6245.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://photos-b.ak.facebook.com/photos-ak-sf2p/v308/131/78/40509369/n40509369_33557329_5299.jpg"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos-b.ak.facebook.com/photos-ak-sf2p/v308/131/78/40509369/n40509369_33557329_5299.jpg" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-3311341439692766174?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/3311341439692766174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=3311341439692766174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/3311341439692766174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/3311341439692766174'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2008/07/day-14-denali-national-park.html' title='Day 14: Denali National Park'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-8710135169231099057</id><published>2008-07-15T13:52:00.002-04:00</published><updated>2008-12-12T20:12:36.343-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='alaska'/><title type='text'>Day 13: Anchorage / Denali National Park</title><content type='html'>So now we've been on the road for nearly two weeks, and are at our halfway point. We've been to Tok, Delta Junctions, Fairbanks, Palmer, Valdez, Glennallen, Anchorage, and Seward. We've hiked to some glaciers, camped near some glaciers, and are about to spend a few nights in Denali National Park. I don't really have much more time in front of this computer, so I'll just leave you with a picture from the beginning (Dawson Creek, BC, Canada) and the end of the Alaska Highway (Delta Junction, AK).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_XnHVrPnrx7o/SHzlEGm_TpI/AAAAAAAAAJ4/rbG6EVCoXng/s1600-h/Picture+or+Video+001.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5223301526499315346" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_XnHVrPnrx7o/SHzlEGm_TpI/AAAAAAAAAJ4/rbG6EVCoXng/s320/Picture+or+Video+001.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_XnHVrPnrx7o/SHzlElh_RKI/AAAAAAAAAKA/MW1r-8-4vM8/s1600-h/Picture+or+Video+008.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5223301534799840418" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_XnHVrPnrx7o/SHzlElh_RKI/AAAAAAAAAKA/MW1r-8-4vM8/s320/Picture+or+Video+008.jpg" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-8710135169231099057?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/8710135169231099057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=8710135169231099057' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/8710135169231099057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/8710135169231099057'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2008/07/day-13-anchorage-denali-national-park.html' title='Day 13: Anchorage / Denali National Park'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_XnHVrPnrx7o/SHzlEGm_TpI/AAAAAAAAAJ4/rbG6EVCoXng/s72-c/Picture+or+Video+001.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-5124277835131814697</id><published>2008-07-10T13:33:00.002-04:00</published><updated>2008-07-10T13:50:59.302-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='alaska'/><title type='text'>Day 8: Driving to Alaska</title><content type='html'>So we're at a public library in Fort St. John, BC, Canada, checking our email, chatting it up with friends. We've been on the road for 8 days and have driven 3715 miles (5975 km). We've seen ten states and two Canadian provences.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Travel Log (subtract 1581 original miles for total distance)&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Greenburg, IN - Odo 2292 miles - $4.129/gal - 15.153gal&lt;/li&gt;&lt;li&gt;Mt. Prospect, IL - Odo 2566 miles &lt;/li&gt;&lt;li&gt;Janesville, WI - Odo 2652 miles - $4.169/gal - 14.936gal&lt;/li&gt;&lt;li&gt;Oxford, WI - Odo 2746 miles &lt;/li&gt;&lt;li&gt;King Island, MN - Odo 2985 miles - $3.919/gal - 13.225gal&lt;/li&gt;&lt;li&gt;Little Falls, MN - Odo 3064 miles&lt;/li&gt;&lt;li&gt;Fargo, ND - Odo 3237 miles - $3.899/gal - 10.289gal (10% ethanol)&lt;/li&gt;&lt;li&gt;Jamestown, ND - Odo 3328 miles&lt;/li&gt;&lt;li&gt;Dickenson, ND - Odo 3501 miles - $4.149/gal - 12.717gal&lt;/li&gt;&lt;li&gt;Medroa, ND - Odo 3567 miles&lt;/li&gt;&lt;li&gt;Miles City, MT - Odo 3747 miles - $4.099/gal - 12.349gal&lt;/li&gt;&lt;li&gt;Livingston, MT - Odo 4002 miles&lt;/li&gt;&lt;li&gt;Big Timber, MT - Odo 4033 miles - $4.099/gal - 18.438gal (85.5 octane, 5gal spare)&lt;/li&gt;&lt;li&gt;Ackley Lake State Park, MT - Odo 4143 miles&lt;/li&gt;&lt;li&gt;Great Falls, MT - Odo 42131 miles - $4.099/gal - 8.158gal&lt;/li&gt;&lt;li&gt;Calgary, AB, Canada - Odo 4570 miles (7355 km) - CAD1.379/L - 51.793L&lt;/li&gt;&lt;li&gt;Lake Louise, AB, Canada - Odo 4673 miles (7520 km)&lt;/li&gt;&lt;li&gt;Drayton Valley, AB, Canada - Odo 4897 miles (7881 km) - CAD1.349/L - 49.314L&lt;/li&gt;&lt;li&gt;Dawson Creek, BC, Canada - Odo 5239 miles (8431 km) - CAD1.419/L - 56.675L (10% ethanol)&lt;/li&gt;&lt;li&gt;Kiskatinaw, BC, Canada - Odo 5259 miles (8464 km)&lt;/li&gt;&lt;li&gt;Fort St. John, BC, Canada - Odo 5296 miles (8523 km)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Next time I'll post it will probably be in Fairbanks, AK on the 13th.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-5124277835131814697?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/5124277835131814697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=5124277835131814697' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/5124277835131814697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/5124277835131814697'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2008/07/day-8-driving-to-alaska.html' title='Day 8: Driving to Alaska'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-8893951632451438914</id><published>2008-07-03T17:01:00.005-04:00</published><updated>2008-12-12T20:12:36.802-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='alaska'/><title type='text'>Destination Alaska</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_XnHVrPnrx7o/SG1CyPAjpvI/AAAAAAAAAJo/zUvXsIOcLZw/s1600-h/IMG_0741.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://3.bp.blogspot.com/_XnHVrPnrx7o/SG1CyPAjpvI/AAAAAAAAAJo/zUvXsIOcLZw/s320/IMG_0741.JPG" alt="" id="BLOGGER_PHOTO_ID_5218900973982033650" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;So yesterday my youngest brother and I started our drive to Alaska. 10,200 miles in total, we've gone just over 500 on our first leg. We're in West Virginia with our other brother and his fiancée, both Marshall students. Tomorrow we are headed to Chicago for the fourth and a beach party. My new car is getting about 25mpg while it is still getting broken in. I'll keep a log going of the miles driven, gas consumed, and prices per gallon whenever I get the chance.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Itinerary&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;03 July - Huntington, WV&lt;/li&gt;&lt;li&gt;04 July - Chicago, IL&lt;/li&gt;&lt;li&gt;05 July - Oxford, WI and Little Falls, MN&lt;/li&gt;&lt;li&gt;06 July - Medora, ND&lt;/li&gt;&lt;li&gt;07 July - Great Falls, MT&lt;/li&gt;&lt;li&gt;08 July - Banff, AB Canada&lt;/li&gt;&lt;li&gt;When I figure out the rest I'll let you know!&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;Travel Log&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Wilmington, NC - Odo 1581 miles - Gas $3.979 - 8.958gal&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Cary, NC - Odo 1715 miles&lt;/li&gt;&lt;li&gt;Wytheville, VA - Odo 1907 miles - $3.899 - 13.658gal&lt;/li&gt;&lt;li&gt;Huntington, WV - Odo 2084 miles&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XnHVrPnrx7o/SG1DAZ3xCKI/AAAAAAAAAJw/tKg2MWh-nHE/s1600-h/IMG_0745.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_XnHVrPnrx7o/SG1DAZ3xCKI/AAAAAAAAAJw/tKg2MWh-nHE/s320/IMG_0745.JPG" alt="" id="BLOGGER_PHOTO_ID_5218901217416120482" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-8893951632451438914?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/8893951632451438914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=8893951632451438914' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/8893951632451438914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/8893951632451438914'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2008/07/destination-alaska.html' title='Destination Alaska'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_XnHVrPnrx7o/SG1CyPAjpvI/AAAAAAAAAJo/zUvXsIOcLZw/s72-c/IMG_0741.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-771546086102287071</id><published>2008-06-22T23:18:00.003-04:00</published><updated>2008-12-09T23:04:11.029-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Wilderness EMT</title><content type='html'>&lt;div&gt;&lt;/div&gt;This last week was quite the week. I drove out to Sylva, NC to take a &lt;a href="http://www.landmarklearning.org/courses-emergency-services.php"&gt;Wilderness EMT class&lt;/a&gt;--also known as the Wilderness Upgrade for Medical Professionals (WUMP)--at &lt;a href="http://www.landmarklearning.org/"&gt;Landmark Learning&lt;/a&gt;. On the way I had to make a two hour diversion due to a serious wreck on I-40 at exit 355 which knocked off a piece of the overpass, backing up traffic for almost 10 miles! However, this did afford me the opportunity to take &lt;a href="http://www.subaru.com/sub/misc/2009/forester/index.html"&gt;my new car&lt;/a&gt; through the mud to make a U-turn on the highway.&lt;br /&gt;&lt;br /&gt;Anyways, the Wilderness EMT certification is administered through the &lt;a href="http://www.nols.edu/wmi/"&gt;Wilderness Medicine Institute of the National Outdoor Leadership School (WMI of NOLS)&lt;/a&gt;. Landmark Learning is one of the partners of WMI that teaches the course. It was 6 days long, including two night classes. We covered every topic you would cover in your urban EMT-B class, just assuming you were out in the back country.&lt;br /&gt;&lt;br /&gt;Without a doubt, the Wilderness EMT course was one of the most fun classes I have ever taken. Furthermore, I learned more in the last week than I ever did in 5 months of EMT school and my (now) 6 months of experience. Our two teachers, Justin and Jon, were perfect foils for one another. They were knowledgeable, hilarious, serious, and extremely competent teachers all at the same time. They taught the course as much outside and hands-on as we sat inside listening to lecture. The lecture was so interactive, nobody sat pounding nails or twiddling their thumbs. Justin and Jon fully expected that everybody in the room would participate, as we were all at least EMT-B's (and a PA) and should know the majority of the information. They just took what we knew and molded it into a back country way of thinking. This dynamic style of learning made for a truely amazing week and has made me a better (urban) EMT!&lt;br /&gt;&lt;br /&gt;While Justin and Jon were the stars of the show there at Landmark Learning, enough can't be said for the interesting cast of people making up the student body. We had ex-special forces, current military, paramedics, a PA, fire fighters, current EMT's, and brand spankin' new EMT's. The brand spankin' new EMT's were fresh out of Landmark Learning's EMT Intensive program, where they spent 19 days at the campus getting fashioned into National Registry EMT-Basics. It is a testament to the amazing educational experience at Landmark to see a large number of them stay through the WEMT program and hold their own with more experienced medical professionals! Thanks also go to the other students for making six solid days of learning seem like the blink of an eye.&lt;br /&gt;&lt;br /&gt;I feel well prepared for my drive to and from Alaska. I have a new car that will go the distance. My brother has his Wilderness First Aid certification (taught by J-Lo of Landmark), and I'm now a WEMT. I think all I need at this point is some experience hiking and camping...crap.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-771546086102287071?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/771546086102287071/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=771546086102287071' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/771546086102287071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/771546086102287071'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2008/06/wilderness-emt.html' title='Wilderness EMT'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-6060478180618940925</id><published>2008-05-12T11:09:00.004-04:00</published><updated>2010-02-16T23:33:00.260-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wpf'/><category scheme='http://www.blogger.com/atom/ns#' term='xaml'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>WPF Application Quality Guide v0.2</title><content type='html'>&lt;a href="http://windowsclient.net/wpf/white-papers/wpf-app-quality-guide.aspx"&gt;Microsoft has released v0.2 of their WPF Application Quality Guide&lt;/a&gt;, which contains some great new items in the application testing section. They go over some interesting ways you can test a GUI application, including media sections of an application. I must say I hadn't thought about taking a screenshot of the desired result and then using an image differencing tool on the user's screenshot as a method of acceptance testing. That section definitely got me thinking on how to streamline our own GUI testing practices (read: nonexistent). I have cleaned up versions of their sample code, and if you'd like it just shoot me an email.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-6060478180618940925?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/6060478180618940925/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=6060478180618940925' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/6060478180618940925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/6060478180618940925'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2008/05/wpf-application-quality-guide-v02.html' title='WPF Application Quality Guide v0.2'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-916568713273447025</id><published>2008-04-21T15:08:00.006-04:00</published><updated>2008-12-09T23:03:01.712-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C/C++'/><category scheme='http://www.blogger.com/atom/ns#' term='assembly'/><title type='text'>RE: NTDebugging Puzzler 0x00000003 (Matrix Edition) Some assembly required</title><content type='html'>So the &lt;a href="http://blogs.msdn.com/ntdebugging/"&gt;Microsoft Advanced Windows Debugging and Troubleshooting&lt;/a&gt; blog put out a puzzler based on reverse engineering assembler into something meaningful, say C/C++. I took a look at the &lt;a href="http://blogs.msdn.com/ntdebugging/archive/2008/04/21/ntdebugging-puzzler-0x00000003-matrix-addition-some-assembly-required.aspx"&gt;assembly listing&lt;/a&gt; and decided it would be a fun break from work to decompile that into something. About 30 minutes later I wound up with some source that compiles down to nearly the same listing as theirs.&lt;br /&gt;&lt;br /&gt;Phew, I've still got it! It took me some time monkeying around with the order of the local variables to get the same space added for the locals as in their example. Other than that it was pretty straight forward.&lt;blockquote&gt;&lt;b&gt;puzzler3.cpp&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;#include &amp;lt;string.h&amp;gt;&lt;br /&gt;&lt;br /&gt;/** Sort an input string's characters in descending order&lt;br /&gt;*&lt;br /&gt;*/&lt;br /&gt;// puzzler3!myfun [c:\source\puzzler\puzzler3\puzzler3\puzzler3.cpp @ 20]:&lt;br /&gt;void myfun(char* arg0)&lt;br /&gt;// 20 00cc1480 55 push ebp&lt;br /&gt;// 20 00cc1481 8bec mov ebp,esp&lt;br /&gt;// 20 00cc1483 81ecf0000000 sub esp,0F0h&lt;br /&gt;// 20 00cc1489 53 push ebx&lt;br /&gt;// 20 00cc148a 56 push esi&lt;br /&gt;// 20 00cc148b 57 push edi&lt;br /&gt;{&lt;br /&gt;//union { // [ebp-0F0h]&lt;br /&gt;//   struct {&lt;br /&gt;    size_t arg0_len;       // [ebp-08h]&lt;br /&gt;//    unsigned int pad0;    // [ebp-0Ch]&lt;br /&gt;//    unsigned int pad1;    // [ebp-10h]&lt;br /&gt;    size_t ii;             // [ebp-14h]&lt;br /&gt;//    unsigned int pad2;    // [ebp-18h]&lt;br /&gt;//    unsigned int pad3;    // [ebp-1Ch]&lt;br /&gt;    size_t len_temp;      // [ebp-20h]&lt;br /&gt;//    unsigned int pad4;    // [ebp-24h]&lt;br /&gt;//    unsigned int pad5;    // [ebp-28h]&lt;br /&gt;    char x;                // [ebp-29h]&lt;br /&gt;//   };&lt;br /&gt;//   unsigned char local_variables[240];&lt;br /&gt;//}; // local variables&lt;br /&gt;&lt;br /&gt;// //set local variables to unusual values for buffer checking&lt;br /&gt;//memset(local_variables,&lt;br /&gt;//   0xCCCCCCCCU,&lt;br /&gt;//   sizeof(local0)/sizeof(unsigned int)&lt;br /&gt;//);  // 20 00cc148c 8dbd10ffffff lea edi,[ebp-0F0h]&lt;br /&gt;  // 20 00cc1492 b93c000000 mov ecx,3Ch&lt;br /&gt;  // 20 00cc1497 b8cccccccc mov eax,0CCCCCCCCh&lt;br /&gt;  // 20 00cc149c f3ab rep stos dword ptr es:[edi]&lt;br /&gt;&lt;br /&gt;len_temp = strlen(arg0); // 26 00cc149e 8b4508 mov eax,dword ptr [ebp+8]&lt;br /&gt;  // 26 00cc14a1 50 push eax&lt;br /&gt;  // 26 00cc14a2 e803fcffff call puzzler3!ILT+165(_strlen) (00cc10aa)&lt;br /&gt;  // 26 00cc14a7 83c404 add esp,4&lt;br /&gt;  // 26 00cc14aa 8945e0 mov dword ptr [ebp-20h],eax&lt;br /&gt;  // 28 00cc14ad 8b45e0 mov eax,dword ptr [ebp-20h]&lt;br /&gt;  // 28 00cc14b0 8945f8 mov dword ptr [ebp-8],eax&lt;br /&gt;&lt;br /&gt;for(arg0_len = len_temp; arg0_len &amp;gt; 0; arg0_len--)&lt;br /&gt;  // 28 00cc14b5 8b45f8 mov eax,dword ptr [ebp-8]&lt;br /&gt;  // 28 00cc14b8 83e801 sub eax,1&lt;br /&gt;  // 28 00cc14bb 8945f8 mov dword ptr [ebp-8],eax&lt;br /&gt;  // 28 00cc14b3 eb09 jmp puzzler3!myfun+0x3e (00cc14be)&lt;br /&gt;  // 28 00cc14be 837df800 cmp dword ptr [ebp-8],0&lt;br /&gt;  // 28 00cc14c2 7e60 jle puzzler3!myfun+0xa4 (00cc1524)&lt;br /&gt;{&lt;br /&gt;  // 30 00cc14c4 c745ec00000000 mov dword ptr [ebp-14h],0&lt;br /&gt;  // 30 00cc14cb eb09 jmp puzzler3!myfun+0x56 (00cc14d6)&lt;br /&gt;  for(ii = 0; ii &amp;lt; (arg0_len - 1); ii++)&lt;br /&gt;    // 30 00cc14cd 8b45ec mov eax,dword ptr [ebp-14h]&lt;br /&gt;    // 30 00cc14d0 83c001 add eax,1&lt;br /&gt;    // 30 00cc14d3 8945ec mov dword ptr [ebp-14h],eax&lt;br /&gt;&lt;br /&gt;    // 30 00cc14d6 8b45f8 mov eax,dword ptr [ebp-8]&lt;br /&gt;    // 30 00cc14d9 83e801 sub eax,1&lt;br /&gt;    // 30 00cc14dc 3945ec cmp dword ptr [ebp-14h],eax&lt;br /&gt;    // 30 00cc14df 7d41 jge puzzler3!myfun+0xa2 (00cc1522)&lt;br /&gt;  {&lt;br /&gt;    //char temp0 = arg0[ii]; // 32 00cc14e1 8b4508 mov eax,dword ptr [ebp+8]&lt;br /&gt;                    // 32 00cc14e4 0345ec add eax,dword ptr [ebp-14h]&lt;br /&gt;                    // 32 00cc14e7 0fbe08 movsx ecx,byte ptr [eax]&lt;br /&gt;    //char temp1 = arg0[ii + 1]; // 32 00cc14ea 8b5508 mov edx,dword ptr [ebp+8]&lt;br /&gt;                      // 32 00cc14ed 0355ec add edx,dword ptr [ebp-14h]&lt;br /&gt;                      // 32 00cc14f0 0fbe4201 movsx eax,byte ptr [edx+1]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    // 32 00cc14f4 3bc8 cmp ecx,eax&lt;br /&gt;    // 32 00cc14f6 7e28 jle puzzler3!myfun+0xa0 (00cc1520)&lt;br /&gt;    if(arg0[ii + 1] &amp;gt; arg0[ii])&lt;br /&gt;    {&lt;br /&gt;       x = arg0[ii]; // 34 00cc14f8 8b4508 mov eax,dword ptr [ebp+8]&lt;br /&gt;                // 34 00cc14fb 0345ec add eax,dword ptr [ebp-14h]&lt;br /&gt;                // 34 00cc14fe 8a08 mov cl,byte ptr [eax]&lt;br /&gt;                // 34 00cc1500 884dd7 mov byte ptr [ebp-29h],cl&lt;br /&gt;            &lt;br /&gt;       arg0[ii] = arg0[ii+1]; // 35 00cc1503 8b4508 mov eax,dword ptr [ebp+8]&lt;br /&gt;                      // 35 00cc1506 0345ec add eax,dword ptr [ebp-14h]&lt;br /&gt;                      // 35 00cc1509 8b4d08 mov ecx,dword ptr [ebp+8]&lt;br /&gt;                      // 35 00cc150c 034dec add ecx,dword ptr [ebp-14h]&lt;br /&gt;                      // 35 00cc150f 8a5101 mov dl,byte ptr [ecx+1]&lt;br /&gt;                      // 35 00cc1512 8810 mov byte ptr [eax],dl&lt;br /&gt;       arg0[ii+1] = x; // 36 00cc1514 8b4508 mov eax,dword ptr [ebp+8]&lt;br /&gt;                  // 36 00cc1517 0345ec add eax,dword ptr [ebp-14h]&lt;br /&gt;                  // 36 00cc151a 8a4dd7 mov cl,byte ptr [ebp-29h]&lt;br /&gt;                  // 36 00cc151d 884801 mov byte ptr [eax+1],cl&lt;br /&gt;    }&lt;br /&gt;  } // 38 00cc1520 ebab jmp puzzler3!myfun+0x4d (00cc14cd)&lt;br /&gt;} // 40 00cc1522 eb91 jmp puzzler3!myfun+0x35 (00cc14b5)&lt;br /&gt;&lt;br /&gt;// return and ensure our stack is still correct&lt;br /&gt;return; // 41 00cc1524 5f pop edi&lt;br /&gt;    // 41 00cc1525 5e pop esi&lt;br /&gt;    // 41 00cc1526 5b pop ebx&lt;br /&gt;    // 41 00cc1527 81c4f0000000 add esp,0F0h&lt;br /&gt;    // 41 00cc152d 3bec cmp ebp,esp&lt;br /&gt;    // 41 00cc152f e820fcffff call puzzler3!ILT+335(__RTC_CheckEsp) (00cc1154)&lt;br /&gt;    // 41 00cc1534 8be5 mov esp,ebp&lt;br /&gt;    // 41 00cc1536 5d pop ebp&lt;br /&gt;    // 41 00cc1537 c3 ret&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;puzzler3_driver.cpp&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;#include &amp;lt;string.h&amp;gt;&lt;br /&gt;&lt;br /&gt;void myfun(char *arg0);&lt;br /&gt;&lt;br /&gt;int main(int argc, char* argv[])&lt;br /&gt;{&lt;br /&gt;char *test = NULL;&lt;br /&gt;&lt;br /&gt;test = (char *)calloc(strlen(argv[0]) + 1, sizeof(char));&lt;br /&gt;strcpy(test, argv[0]);&lt;br /&gt;&lt;br /&gt;printf("%s\n", test);&lt;br /&gt;myfun(test);&lt;br /&gt;printf("%s\n", test);&lt;br /&gt;&lt;br /&gt;return 0;&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;You'll need an MSVC compiler, probably circa VS2k5 or later, with &lt;tt&gt;/Od /GS /RTC1 /FA /Fa"bin\\"&lt;/tt&gt; to get a listing that'll look like their listing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-916568713273447025?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/916568713273447025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=916568713273447025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/916568713273447025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/916568713273447025'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2008/04/re-ntdebugging-puzzler-0x00000003.html' title='RE: NTDebugging Puzzler 0x00000003 (Matrix Edition) Some assembly required'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-2681588034154507880</id><published>2008-04-18T12:53:00.004-04:00</published><updated>2008-12-09T23:04:34.283-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Lessons Learned Transporting Patients</title><content type='html'>I've learned quite a few things lately transporting patients. Correction, I've &lt;span style="font-weight: bold;"&gt;relearned&lt;/span&gt; quite a few things transporting patients. It isn't like I did not already know what to do, or what I was expected to do, I'm just new. Green. Wet behind the ears. A pain in the ass for admit nurses.&lt;br /&gt;&lt;br /&gt;No matter how much of a Real American Badass(tm) you are, no matter how Rain Man-esque you are with numbers, always have your run sheet in front of you when you call in to the hospital. Nothing makes you look like more of an idiot than rattling off a long set of vitals to the admit nurse and then fumbling a curveball question thrown at you like, "his age?" Your lack of an automatic response to this question lets them know you're now covering the phone to ask the patient.&lt;br /&gt;&lt;br /&gt;Also, if you have any doubt what any of the medications your patient is on are for, take the 30 seconds to look them up in your field guide. The physician may only be quizzing you when they ask if the patient is on a specific class of drugs, but wouldn't you rather have the correct answer for them than say you are unsure what one of the medications is for?&lt;br /&gt;&lt;br /&gt;The biggest problem I've found is not that I'm lacking any of the training necessary to fulfill my position as an EMT, just that it isn't automatic for me yet. You can imagine the level of frustration with myself considering my talents in other fields.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-2681588034154507880?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/2681588034154507880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=2681588034154507880' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/2681588034154507880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/2681588034154507880'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2008/04/lessons-learned-transporting-patients.html' title='Lessons Learned Transporting Patients'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-2248351362625258510</id><published>2008-04-09T10:13:00.005-04:00</published><updated>2010-02-16T23:34:15.427-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Shell Context Menu Slow to Open</title><content type='html'>Recently I've had a problem on my home machine where when right clicking on various shell items (not every shell item) could take 1-2 minutes to bring up the context menu. Explorer would go 'Not Responding', yet take up 0% CPU. Obviously something was blocking in Explorer, and I figured it to be one of my context menu handlers. Context menu handlers are buried within the registry in an expansive set of keys for literally every type of file system object on your computer. Locating every context menu handler is a tall order, but with a little help from Google, I found that &lt;a href="http://www.nirsoft.net/"&gt;NirSoft &lt;/a&gt;has an amazing tool called &lt;a href="http://www.nirsoft.net/utils/shexview.html"&gt;ShellExView &lt;/a&gt;which allows you to view all hooks into the Shell, and disable them &lt;span style="font-style: italic;"&gt;en masse&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;The first step I took was disabling every Context Menu and Property Sheet handler. Then I restarted my machine, and prepared to slowly re-enable them until I found the offending handler. ShellExView has a cool sort method to sort by company, which I tried first, but found no relief. Eventually I discovered that no matter how many things I disabled, my context menu was still slow as dirt.&lt;br /&gt;&lt;br /&gt;Then I cut off my network card. Windows loves to take its time trying to find UNC paths--as you're well aware if you've ever mistyped a network share into Start/Run--so I chanced to gather that some shell verb pointed to something on a network path that was no longer there. Viola! Without a network connection my shell context menu's came up at regular speed.&lt;br /&gt;&lt;br /&gt;How on earth do I easily find the culprit? There is some shell verb with a UNC path being referenced, and the Registry is a mighty large place. Once again NirSoft&lt;sup&gt;1&lt;/sup&gt; came to the rescue with their Registry search tool &lt;a href="http://www.nirsoft.net/utils/regscanner.html"&gt;RegScanner&lt;/a&gt;. Set it to search for "\\" and stand back for the deluge of UNC paths found in your registry. Open and delete&lt;sup&gt;2&lt;/sup&gt; any branches that look like [Something\shell\*\command] and have a UNC path in the key. Mine was a program I used once on a Samba share that somehow made its way into my Open list.&lt;br /&gt;&lt;br /&gt;Once I removed the offending key, it was back to business as usual.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;1. &lt;span style="font-weight: bold;"&gt;nota bene&lt;/span&gt;: I did not intend for this to be a &lt;a href="http://www.nirsoft.net/"&gt;NirSoft&lt;/a&gt; shill post, but they really do have the two most useful tools for diagnosing Shell hook problems.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;2. &lt;span style="font-weight: bold;"&gt;nota bene&lt;/span&gt;: if you aren't willing to live with toasting your Windows install, you may be inclined to export any keys you delete. I, however, am not so inclined.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-2248351362625258510?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/2248351362625258510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=2248351362625258510' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/2248351362625258510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/2248351362625258510'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2008/04/shell-context-menu-slow-to-open.html' title='Shell Context Menu Slow to Open'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-2290661650598722613</id><published>2008-04-07T13:04:00.004-04:00</published><updated>2008-04-07T13:24:12.919-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wpf'/><category scheme='http://www.blogger.com/atom/ns#' term='xaml'/><title type='text'>Zooming Objects Inside a WPF ItemsControl</title><content type='html'>Previously I've shown how to zoom objects in WPF using either an attached property or directly binding a LayoutTransform. If you'd like to zoom objects inside of an ItemsControl, you can use a slight variation on the direct binding strategy.&lt;br /&gt;&lt;br /&gt;First you should style the ItemsPanel template for your ItemsControl, in this case a ListBox.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&amp;lt;ItemsPanelTemplate x:Key="ZoomedItemsPanel"&amp;gt;&lt;br /&gt;    &amp;lt;StackPanel IsItemsHost="True"&amp;gt;&lt;br /&gt;       &amp;lt;StackPanel.LayoutTransform&amp;gt;&lt;br /&gt;          &amp;lt;ScaleTransform&lt;br /&gt;             ScaleX="{Binding Path=Value, ElementName=ZoomSlider}"&lt;br /&gt;             ScaleY="{Binding Path=Value, ElementName=ZoomSlider}" /&amp;gt;&lt;br /&gt;       &amp;lt;/StackPanel.LayoutTransform&amp;gt;&lt;br /&gt;    &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;&amp;lt;/ItemsPanelTemplate&amp;gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Then your ListBox can reference the ZoomedItemsPanel and enjoy zooming on just its contents!&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&amp;lt;Label Content="Zoom: "&lt;br /&gt;   Target="{Binding ElementName=ZoomSlider}" /&amp;gt;&lt;br /&gt;&amp;lt;Slider x:Name="ZoomSlider"&lt;br /&gt;   Minimum="0.25"&lt;br /&gt;   Value="1"&lt;br /&gt;   Maximum="5"&lt;br /&gt;   SmallChange="0.5"&lt;br /&gt;   LargeChange="1.0" /&amp;gt;&lt;br /&gt;&amp;lt;ListBox ItemsPanel="{DynamicResource ZoomedItemsPanel}" /&amp;gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Wasn't that easy?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-2290661650598722613?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/2290661650598722613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=2290661650598722613' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/2290661650598722613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/2290661650598722613'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2008/04/zooming-objects-inside-wpf-itemscontrol.html' title='Zooming Objects Inside a WPF ItemsControl'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-1992806620475267042</id><published>2008-03-07T10:08:00.006-05:00</published><updated>2008-12-12T20:12:37.338-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wpf'/><category scheme='http://www.blogger.com/atom/ns#' term='xaml'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>WPF TileBrush Nonsense</title><content type='html'>For the absolute life of me I cannot get a custom TileBrush to tile outside of VS2k8 or Blend 2.5. The basics are that I'm constructing a ruler, which started programmatically after finding the current DPI. When that didn't work, I attempted to do the same thing in straight XAML, which wouldn't be relative to the DPI (thus would only be a nice ruler at 96dpi). Even this would not work. At this point my frustration knows no bounds.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XnHVrPnrx7o/R9FbSp5YyLI/AAAAAAAAAJA/u12dffPPAqQ/s1600-h/tilebrush-vs2k8.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_XnHVrPnrx7o/R9FbSp5YyLI/AAAAAAAAAJA/u12dffPPAqQ/s320/tilebrush-vs2k8.png" alt="" id="BLOGGER_PHOTO_ID_5175017822867736754" border="0" /&gt;&lt;/a&gt;The above is a screengrab from inside VS2k8. The screengrab from Blend 2.5 also shows the ruler tiling. Below is a screengrab during runtime, notice the distinctive lack of tiling, and now it is somehow stretching to Fill.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_XnHVrPnrx7o/R9FboJ5YyMI/AAAAAAAAAJI/sdKrn_wn7rQ/s1600-h/tilebrush-runtime.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_XnHVrPnrx7o/R9FboJ5YyMI/AAAAAAAAAJI/sdKrn_wn7rQ/s320/tilebrush-runtime.png" alt="" id="BLOGGER_PHOTO_ID_5175018192234924226" border="0" /&gt;&lt;/a&gt;The tiled brush is a DrawingBrush consisting of a GeometryDrawing with a GeometryGroup of LineGeometry's. The annotated XAML is given below:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&amp;lt;DrawingBrush x:Key="RulerBrush"&lt;br /&gt;  Stretch="None"&lt;br /&gt;  TileMode="Tile"&lt;br /&gt;  Viewport="0,0,96,16"&lt;br /&gt;  ViewportUnits="Absolute"&lt;br /&gt;  Viewbox="0 0 1 1"&lt;br /&gt;  ViewboxUnits="RelativeToBoundingBox"&amp;gt;&lt;br /&gt;&amp;lt;DrawingBrush.Drawing&amp;gt;&lt;br /&gt;  &amp;lt;GeometryDrawing&amp;gt;&lt;br /&gt;  &amp;lt;GeometryDrawing.Geometry&amp;gt;&lt;br /&gt;     &amp;lt;GeometryGroup&amp;gt;&lt;br /&gt;     &amp;lt;LineGeometry EndPoint="0,16"&lt;br /&gt;           StartPoint="0,0" /&amp;gt;&lt;br /&gt;     &amp;lt;!--   ...   --&amp;gt;&lt;br /&gt;     &amp;lt;LineGeometry EndPoint="48,16"&lt;br /&gt;           StartPoint="48,4" /&amp;gt;&lt;br /&gt;     &amp;lt;!--   ...   --&amp;gt;&lt;br /&gt;     &amp;lt;LineGeometry EndPoint="96,16"&lt;br /&gt;           StartPoint="96,0" /&amp;gt;&lt;br /&gt;     &amp;lt;/GeometryGroup&amp;gt;&lt;br /&gt;  &amp;lt;/GeometryDrawing.Geometry&amp;gt;&lt;br /&gt;  &amp;lt;GeometryDrawing.Pen&amp;gt;&lt;br /&gt;     &amp;lt;Pen Brush="#FF000000"&lt;br /&gt;        Thickness="1" /&amp;gt;&lt;br /&gt;  &amp;lt;/GeometryDrawing.Pen&amp;gt;&lt;br /&gt;  &amp;lt;/GeometryDrawing&amp;gt;&lt;br /&gt;&amp;lt;/DrawingBrush.Drawing&amp;gt;&lt;br /&gt;&amp;lt;/DrawingBrush&amp;gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;And the requisite XAML for the display area:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&amp;lt;Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;br /&gt;  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&lt;br /&gt;  x:Class="Test.Window1"&lt;br /&gt;  x:Name="Window"&lt;br /&gt;  Title="Window"&lt;br /&gt;  Width="640"&lt;br /&gt;  Height="480"&amp;gt;&lt;br /&gt;  &amp;lt;DockPanel x:Name="LayoutRoot" LastChildFill="True"&amp;gt;&lt;br /&gt;     &amp;lt;ToolBarTray x:Name="ToolBarTray"&lt;br /&gt;        DockPanel.Dock="Top"&amp;gt;&lt;br /&gt;        &amp;lt;ToolBar x:Name="MenuToolBar"&lt;br /&gt;           ToolBar.Band="0"&lt;br /&gt;           Width="{Binding Path=ActualWidth, ElementName=ToolBarTray}" /&amp;gt;&lt;br /&gt;     &amp;lt;/ToolBarTray&amp;gt;&lt;br /&gt;     &amp;lt;Rectangle x:Name="RulerY"&lt;br /&gt;        DockPanel.Dock="Left"&lt;br /&gt;        Height="15" Margin="0,15,0,0"&lt;br /&gt;        Fill="{DynamicResource RulerBrush}"&amp;gt;&lt;br /&gt;        &amp;lt;Rectangle.LayoutTransform&amp;gt;&lt;br /&gt;           &amp;lt;RotateTransform Angle="-90.0" /&amp;gt;&lt;br /&gt;        &amp;lt;/Rectangle.LayoutTransform&amp;gt;&lt;br /&gt;     &amp;lt;/Rectangle&amp;gt;&lt;br /&gt;     &amp;lt;Rectangle x:Name="RulerX"&lt;br /&gt;        DockPanel.Dock="Top"&lt;br /&gt;        Height="15" Margin="0,0,0,0"&lt;br /&gt;        Fill="{DynamicResource RulerBrush}"/&amp;gt;&lt;br /&gt;     &amp;lt;ScrollViewer Style="{DynamicResource SimpleScrollViewer}"/&amp;gt;&lt;br /&gt;  &amp;lt;/DockPanel&amp;gt;&lt;br /&gt;&amp;lt;/Window&amp;gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;This is fairly obnoxious!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-1992806620475267042?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/1992806620475267042/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=1992806620475267042' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/1992806620475267042'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/1992806620475267042'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2008/03/wpf-tilebrush-nonsense.html' title='WPF TileBrush Nonsense'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_XnHVrPnrx7o/R9FbSp5YyLI/AAAAAAAAAJA/u12dffPPAqQ/s72-c/tilebrush-vs2k8.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-3971270669143934362</id><published>2008-02-08T14:14:00.001-05:00</published><updated>2008-12-09T23:02:08.228-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wpf'/><category scheme='http://www.blogger.com/atom/ns#' term='standards'/><category scheme='http://www.blogger.com/atom/ns#' term='xaml'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Writing Quality WPF Applications</title><content type='html'>I've got together a few resources which are helpful when attempting to write a quality WPF application. While some of them are for C# 2.0 or .Net 2.0, I feel they are just as valid in C# 3.0 and .Net 3.5.&lt;br /&gt;&lt;br /&gt;Without further ado, the (currently short) list:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://windowsclient.net/wpf/white-papers/wpf-app-quality-guide.aspx"&gt;WPF Application Quality Guide&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.paulstovell.net/blog/index.php/xaml-and-wpf-coding-guidelines/"&gt;Paul Stovell's XAML/WPF Coding Standards&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.beacosta.com/blog/"&gt;Bea Costa's Blog (DataBinding best practices)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.idesign.net/idesign/download/IDesign%20CSharp%20Coding%20Standard.zip"&gt;iDesign C# Standard&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms229042.aspx"&gt;Microsoft Design Guidelines&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Hopefully in the future there will be more guides for effective WPF development!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-3971270669143934362?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/3971270669143934362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=3971270669143934362' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/3971270669143934362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/3971270669143934362'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2008/02/writing-quality-wpf-applications.html' title='Writing Quality WPF Applications'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-2923513846817290189</id><published>2008-01-31T11:22:00.002-05:00</published><updated>2008-12-09T23:04:46.570-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>NREMT-B and NCEMT-B</title><content type='html'>I passed both the &lt;a href="http://www.nremt.org/"&gt;National Registry EMT-Basic&lt;/a&gt; and &lt;a href="http://www.ncems.org/"&gt;North Carolina EMT-Basic&lt;/a&gt; certifications in December and January respectively. Soon I will be volunteering with a local EMS unit, probably at night. In March I will be taking &lt;a href="http://www.nols.edu/wmi/courses/wemt.shtml"&gt;Wilderness EMT&lt;/a&gt; training and finally in August I start Paramedic school. Lots of fun to be had in the near future!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-2923513846817290189?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/2923513846817290189/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=2923513846817290189' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/2923513846817290189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/2923513846817290189'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2008/01/nremt-b-and-ncemt-b.html' title='NREMT-B and NCEMT-B'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-2823203568161440357</id><published>2008-01-24T11:09:00.002-05:00</published><updated>2010-02-16T23:30:18.200-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wpf'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Where the &amp;%$@ is HashSet?</title><content type='html'>If you've created a .Net 3.5 project in Expression Blend 2 (December Preview) and then opened it up in VS2k8, you may have noticed that using &lt;span style="font-weight: bold; font-family:courier new;"&gt;System.Collections.Generic&lt;/span&gt; does not give you &lt;span style="font-family:courier new;"&gt;HashSet&lt;/span&gt;&lt;t&gt;.&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;blockquote&gt;The type or namespace name 'HashSet' could not be found.&lt;/blockquote&gt;&lt;/span&gt;You may be gnashing your teeth over this, but the simple solution is to add &lt;span style=" font-weight: bold;font-family:courier new;"&gt;System.Core.dll&lt;/span&gt;&lt;span style="font-family:georgia;"&gt; &lt;/span&gt;as a reference to your project because it appears Blend 2 leaves this out.&lt;/t&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-2823203568161440357?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/2823203568161440357/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=2823203568161440357' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/2823203568161440357'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/2823203568161440357'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2008/01/where-is-hashset.html' title='Where the &amp;%$@ is HashSet&lt;T&gt;?'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-433329967927226955</id><published>2008-01-24T10:29:00.001-05:00</published><updated>2008-12-09T22:54:57.457-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wpf'/><category scheme='http://www.blogger.com/atom/ns#' term='xaml'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Update: Zoom multiple controls from the same slider in XAML</title><content type='html'>I've had a serious learning curve with XAML, and frequently find new and better ways of doing things. A good example of this is zooming multiple controls from the same slider. My previous solution used a DependencyProperty and an IValueConverter and was probably slow as dirt if you wired up more than a few controls to get zoomed. A much more succinct, maintainable, and readable solution would be:&lt;br /&gt;&lt;pre&gt;&lt;blockquote&gt;&amp;lt;Page class="ZoomTest.Page1" name="page" xmlns="..."&amp;gt;&lt;br /&gt;xmlns:local="clr-namespace:ZoomTest"&lt;br /&gt;local:AttachedProperties.Zoom="0.8"&amp;gt;&lt;br /&gt;&amp;lt;Grid&amp;gt;&lt;br /&gt; &amp;lt;Grid.LayoutTransform&amp;gt;&lt;br /&gt;    &amp;lt;ScaleTransform ScaleX="{Binding Path=Zoom,&lt;br /&gt;                                     ElementName=page}"&lt;br /&gt;                    ScaleY="{Binding Path=Zoom,&lt;br /&gt;                                     ElementName=page}" /&amp;gt;&lt;br /&gt; &amp;lt;/Grid.LayoutTransform&amp;gt;&lt;br /&gt;&amp;lt;/Grid&amp;gt;&lt;br /&gt;&amp;lt;/Page&amp;gt;&lt;/blockquote&gt;&lt;/pre&gt;And yes, while I do have two bindings, it actually is very fast. One of the big things I've learned is you can really (ab)use the binding system and strangely enough have a faster UI than one you control! In a GUI application I'm designing in WPF, there are over 5000 data bindings on just one page, and yet it is nearly twice as fast as the version where I practically precompute the whole UI! My only guess as to why this is the case is that UIElement's are much more expensive than data bindings.&lt;br /&gt;&lt;br /&gt;Another way to tackle the above problem, if say you're on the same UI without Page's, is actually much simpler:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&amp;lt;Window ...&amp;gt;&lt;br /&gt;  &amp;lt;DockPanel x:Name="LayoutRoot"&lt;br /&gt;             LastChildFill="True"&amp;gt;&lt;br /&gt;     &amp;lt;StackPanel DockPanel.Dock="Top"&amp;gt;&lt;br /&gt;        &amp;lt;Slider x:Name="ZoomSlider"&lt;br /&gt;                Minimum="1" Value="5" Maximum="10" /&amp;gt;&lt;br /&gt;     &amp;lt;/StackPanel&amp;gt;&lt;br /&gt;     &amp;lt;ScrollViewer&amp;gt;&lt;br /&gt;        &amp;lt;Grid x:Name="content"&amp;gt;&lt;br /&gt;           &amp;lt;Grid.LayoutTransform&amp;gt;&lt;br /&gt;              &amp;lt;ScaleTransform ScaleX="{Binding Path=Value,&lt;br /&gt;                              ElementName=ZoomSlider}"&lt;br /&gt;                              ScaleY="{Binding Path=Value,&lt;br /&gt;                              ElementName=ZoomSlider}" /&amp;gt;&lt;br /&gt;           &amp;lt;/Grid.LayoutTransform&amp;gt;&lt;br /&gt;        &amp;lt;/Grid&amp;gt;&lt;br /&gt;     &amp;lt;/ScrollViewer&amp;gt;&lt;br /&gt;  &amp;lt;/DockPanel&amp;gt;&lt;br /&gt;&amp;lt;/Window&amp;gt;&lt;/pre&gt;&lt;/blockquote&gt;Using strategies like this you can use less C# and more XAML. I've been able to take over 7000 lines of presentation code written for Java 1.4 (the C# 2.0 code would be roughly the same size) and turn it into roughly 550 lines of XAML and 100 lines of C# 3.0. Expect more little fun things you can do with WPF soon (like making a ListBox do whatever you please).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-433329967927226955?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/433329967927226955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=433329967927226955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/433329967927226955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/433329967927226955'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2008/01/update-zoom-multiple-controls-from-same.html' title='Update: Zoom multiple controls from the same slider in XAML'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-1723865224479306218</id><published>2007-12-13T10:56:00.001-05:00</published><updated>2008-12-09T23:02:26.718-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wpf'/><category scheme='http://www.blogger.com/atom/ns#' term='xaml'/><category scheme='http://www.blogger.com/atom/ns#' term='c#'/><title type='text'>Zoom multiple controls from the same slider in XAML</title><content type='html'>Recently we've been playing around with &lt;span style="font-weight: bold;"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms752059.aspx"&gt;XAML&lt;/a&gt; &lt;/span&gt;and &lt;span style="font-weight: bold;"&gt;&lt;a href="http://en.wikipedia.org/wiki/Windows_Presentation_Foundation"&gt;WPF&lt;/a&gt; &lt;/span&gt;at work, and a common situation we run across is wanting to zoom different &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.controls.page.aspx"&gt;&lt;span style="font-weight: bold;"&gt;Page&lt;/span&gt;&lt;/a&gt;'s without having separate zoom functionality. One slider should be enough to zoom any Page we hook up.&lt;br /&gt;&lt;br /&gt;The basics start with an attached &lt;span style="font-weight: bold;"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.dependencyproperty.aspx"&gt;DependencyProperty&lt;/a&gt; &lt;/span&gt;called Zoom.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;public static class AttachedProperties&lt;br /&gt;{&lt;br /&gt;  public static readonly DependencyProperty ZoomProperty&lt;br /&gt;     = DependencyProperty.RegisterAttached("Zoom", typeof(double), typeof(UIElement),&lt;br /&gt;        new FrameworkPropertyMetadata(1.0,&lt;br /&gt;        FrameworkPropertyMetadataOptions.AffectsRender, null /* PropChangedCallback */,&lt;br /&gt;        new CoerceValueCallback((obj, value) =&amp;gt; (double)value &amp;lt; 0.0 ? 0.0 : (double)value)));&lt;br /&gt;&lt;br /&gt;  public static double GetZoom(DependencyObject obj)&lt;br /&gt;  {&lt;br /&gt;     return (double)obj.GetValue(ZoomProperty);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public static void SetZoom(DependencyObject obj, object value)&lt;br /&gt;  {&lt;br /&gt;     double val = Double.Parse(value.ToString());&lt;br /&gt;     obj.SetValue(ZoomProperty, val);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Now we have an attached property we can connect to any UI Element! Notice that I suffixed 'Zoom' with '-Property' for the static variable, yet gave &lt;span style="font-weight: bold;"&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.dependencyproperty.registerattached.aspx"&gt;RegisterAttached&lt;/a&gt; &lt;/span&gt;just 'Zoom'. This is by convention (coincidentally so are the Get/Set pair below the static value).&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&amp;lt;Page x:Class="ZoomTest.Page1" x:Name="page" xmlns="..."&amp;gt;&lt;br /&gt;  xmlns:local="clr-namespace:ZoomTest"&lt;br /&gt;  local:AttachedProperties.Zoom="0.8"&amp;gt;&lt;br /&gt;  &amp;lt;Grid /&amp;gt;&lt;br /&gt;&amp;lt;/Page&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Now we have a Page that starts with a default zoom property of 80%. However, this does not do us much good. We don't actually tell the page how to zoom anywhere. This is where &lt;a href="http://msdn2.microsoft.com/en-us/library/ms752347.aspx"&gt;&lt;span style="font-weight: bold;"&gt;Binding &lt;/span&gt;&lt;/a&gt;comes into play.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&amp;lt;Page x:Class="ZoomTest.Page1" x:Name="page" xmlns="..."&amp;gt;&lt;br /&gt;  xmlns:local="clr-namespace:ZoomTest"&lt;br /&gt;  local:AttachedProperties.Zoom="0.8"&amp;gt;&lt;br /&gt;  &amp;lt;Grid LayoutTransform="{Binding Zoom, ElementName=page}"&amp;gt;&lt;br /&gt;  &amp;lt;/Grid&amp;gt;&lt;br /&gt;&amp;lt;/Page&amp;gt;&lt;/pre&gt;&lt;/blockquote&gt;Now anything inside of the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.controls.grid.aspx"&gt;&lt;span style="font-weight: bold;"&gt;Grid &lt;/span&gt;&lt;/a&gt;will get a &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.frameworkelement.layouttransform.aspx"&gt;&lt;span style="font-weight: bold;"&gt;LayoutTransform &lt;/span&gt;&lt;/a&gt;based on the Zoom property of the Page! Unfortunately the LayoutTransform requires an actual Transform and not a double. Now we could have made the Zoom property a &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.media.scaletransform.aspx"&gt;&lt;span style="font-weight: bold;"&gt;ScaleTransform&lt;/span&gt;&lt;/a&gt;, but that makes it less useful as an attached property. However, all is not lost:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;public class ZoomConverter : IValueConverter&lt;br /&gt;{&lt;br /&gt;  public object Convert(object value, Type targetType, object parameter, CultureInfo culture)&lt;br /&gt;  {&lt;br /&gt;     if (targetType != typeof(Transform))&lt;br /&gt;        throw new InvalidOperationException();&lt;br /&gt;&lt;br /&gt;     double val = Double.Parse(value.ToString()) / 100.0;&lt;br /&gt;     return new ScaleTransform(val, val);&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)&lt;br /&gt;  {&lt;br /&gt;     throw new NotSupportedException();&lt;br /&gt;  }&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;Now we just have to hook the converter up to the data binding, and viola! We have a Page who's Grid content zooms in and out with respect to a given scale.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&amp;lt;Page x:Class="ZoomTest.Page1" x:Name="page" xmlns="..."&amp;gt;&lt;br /&gt;  xmlns:local="clr-namespace:ZoomTest"&lt;br /&gt;  local:AttachedProperties.Zoom="0.8"&amp;gt;&lt;br /&gt;  &amp;lt;Page.Resources&amp;gt;&amp;lt;local:ZoomConverter x:Key="zoomConverter" /&amp;gt;&amp;lt;/Page.Resources&amp;gt;&lt;br /&gt;  &amp;lt;Grid LayoutTransform="{Binding Zoom, ElementName=page, Converter={StaticResource zoomConverter}}"&amp;gt;&lt;br /&gt;  &amp;lt;/Grid&amp;gt;&lt;br /&gt;&amp;lt;/Page&amp;gt;&lt;/pre&gt;&lt;/blockquote&gt;At this point all we have to do is wire up a &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.controls.slider.aspx"&gt;&lt;span style="font-weight: bold;"&gt;Slider &lt;/span&gt;&lt;/a&gt;(two step process wraaa)!&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;&amp;lt;Window x:Class="GeometryTest.Window1" x:Name="window"&lt;br /&gt;  xmlns="..." local="clr-namespace:ZoomTest"&lt;br /&gt;  Title="Zoom Test" Height="480" Width="640"&amp;gt;&lt;br /&gt;  &amp;lt;DockPanel LastChildFill="True"&amp;gt;&lt;br /&gt;     &amp;lt;ToolBarTray DockPanel.Dock="Top"&amp;gt;&lt;br /&gt;        &amp;lt;ToolBar&amp;gt;&lt;br /&gt;           &amp;lt;Label&amp;gt;Zoom:&amp;lt;/Label&amp;gt;&amp;lt;Slider x:Name="zoomSlider" Minimum="1" Maximum="100" Value="50" /&amp;gt;&lt;br /&gt;        &amp;lt;/ToolBar&amp;gt;&lt;br /&gt;     &amp;lt;/ToolBarTray&amp;gt;&lt;br /&gt;     &amp;lt;Frame Source="Page1.xaml" LoadCompleted="ContentFrame_LoadCompleted" /&amp;gt;&lt;br /&gt;  &amp;lt;/DockPanel&amp;gt;&lt;br /&gt;&amp;lt;/Window&amp;gt;&lt;br /&gt;...&lt;br /&gt;void ContentFrame_LoadCompleted(object sender, NavigationEventArgs e)&lt;br /&gt;{&lt;br /&gt;  Binding binding = new Binding();&lt;br /&gt;  binding.Source = zoomSlider;&lt;br /&gt;  binding.Path = new PropertyPath("Value");&lt;br /&gt;  (ContentFrame.Content as UIElement).SetBinding(AttachedProperties.ZoomProperty, binding);&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;Now, changing the zoom value with the Slider will cause the Grid to zoom in and out! Bonus points for adding a &lt;a style="font-weight: bold;" href="http://msdn2.microsoft.com/en-us/library/system.windows.controls.scrollviewer.aspx"&gt;ScrollViewer &lt;/a&gt;to the Page to let you actually see the change in size of your Grid.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-1723865224479306218?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/1723865224479306218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=1723865224479306218' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/1723865224479306218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/1723865224479306218'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2007/12/zoom-multiple-controls-from-same-slider.html' title='Zoom multiple controls from the same slider in XAML'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-4790921876635713038</id><published>2007-11-13T11:11:00.001-05:00</published><updated>2008-12-12T20:12:45.165-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EMT/Paramedic'/><title type='text'>Emergency Medical Technician</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_XnHVrPnrx7o/Rztlo0no6HI/AAAAAAAAAI4/MbECn1zB9Jw/s1600-h/n1392450078_30313139_6153.jpg.jpeg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://1.bp.blogspot.com/_XnHVrPnrx7o/Rztlo0no6HI/AAAAAAAAAI4/MbECn1zB9Jw/s320/n1392450078_30313139_6153.jpg.jpeg" alt="" id="BLOGGER_PHOTO_ID_5132807952312887410" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;My absence from blogging lately can be attributed to a recent change in my life. I'm nearly finished with my Emergency Medical Technician - Basic training at a local community college. This class has been really challenging, and quite a lot of fun. However, studying has dominated my free time, and I have less time at work to blog (because I work less hours now).&lt;br /&gt;&lt;br /&gt;Recap of fun things:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Hospital clinicals were great&lt;/li&gt;&lt;li&gt;Ambulance ride-alongs have been fun as well (one more left!)&lt;/li&gt;&lt;li&gt;The Jaws-of-Life are so indescribably cool (I got to cut the roof off of a car), quite literally the Jaws-of-Life will cut through anything you can fit them around on a car.&lt;/li&gt;&lt;/ul&gt;In August I begin Paramedic school, however, to fill the gap from January (certification as an EMT-B) until August I will be volunteering for a local Fire/Rescue squad as either an EMT-B first responder or an EMT-B in an ambulance. I will keep everyone (all seven of you) updated as this part of my life continues.&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Nota bene:&lt;/span&gt; I will still be working as a software engineer, just volunteering as an EMT-B.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-4790921876635713038?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/4790921876635713038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=4790921876635713038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4790921876635713038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4790921876635713038'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2007/11/emergency-medical-technician.html' title='Emergency Medical Technician'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_XnHVrPnrx7o/Rztlo0no6HI/AAAAAAAAAI4/MbECn1zB9Jw/s72-c/n1392450078_30313139_6153.jpg.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-8395180056960511594</id><published>2007-10-02T10:00:00.002-04:00</published><updated>2010-02-16T23:33:45.123-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><title type='text'>I Work in an Almost Award Winning Trailer</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_XnHVrPnrx7o/RwJUUzLcbCI/AAAAAAAAAAs/7PzxDi3LIs0/s1600-h/mobi-award-of-distinction-2007.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_XnHVrPnrx7o/RwJUUzLcbCI/AAAAAAAAAAs/7PzxDi3LIs0/s320/mobi-award-of-distinction-2007.gif" alt="" id="BLOGGER_PHOTO_ID_5116744842958629922" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;People often tell me they think I work in some glorious office building, or at least somewhere cool. This is pretty far from the truth. On site I've worked in "Green Acres", the e-Cave, shop floor mezzanines, and now a trailer.&lt;br /&gt;&lt;br /&gt;"Green Acres" was the first place I worked on site. It was the green office area, which picked up its folksy nickname because you were deep inside a manufacturing building, bathed in constant fluorescent light, unable to hear anything from the outside. If you came in to work and the sun was shining, your brain expected the sun to be shining when you left. Unless lightning struck the building, we were completely oblivious to outside noise. Just the constant hum of fluorescent lighting.&lt;br /&gt;&lt;br /&gt;Later I switched groups and was given the opportunity to work in the e-Cave. Imagine a room with open faced cubicles lining the walls. Seven interns and four salaried workers all crammed into a big open room with some conference room chairs, a projector, and a screen. My fondest memories of working on site were from the e-Cave. Come 11am, the whole crew would rally for lunch. I swear those were the most productive years; my old boss swears they were the least productive years.&lt;br /&gt;&lt;br /&gt;This same group got bounced around to various locations, eventually settling down in a shop floor mezzanine. We stayed there for almost 3 years. It wasn't bad, the interns had their own 'row', we spent a lot of time in each others cubes. Pretty standard corporate experience....except the place smelled like feet (&lt;span style="font-style: italic;"&gt;ed: as I am writing this my shoes are off and I'm just in socks...no idea why that place smelled like feet, nope&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Not too long ago we got the news that we would be moving to the 14-wide. This 14 trailer wide (yes &lt;span style="font-weight: bold;"&gt;14&lt;/span&gt;) "modular office space" is actually the bigger of two trailers built on the far side of the site. Our sister trailer is only 13-wide, but it is hard to tell they are short one trailer. Our trailer is complete with a buried septic tank (that has hit the critical level alarm twice), offsite power (we've lost it no less than 3 times), and a gravel parking lot. I will say though that parking is a lot more fun when you can fishtail into a spot.&lt;br /&gt;&lt;br /&gt;It is hard not to laugh at where I work. I work for a Fortune 10 company...in a trailer. We do all sorts of crazy nuclear methods...in a trailer. But wait, this isn't just any trailer. This is an &lt;span style="font-weight: bold;"&gt;Almost Award Winning Trailer&lt;/span&gt;. &lt;a href="http://www.willscot.com/about/2007-modular-building-institute-awards-of-distinction.html"&gt;Our 14-wide received honorable mention in the 2007 Modular Building Institute Awards of Distinction for a modular office space of &amp;lt;5,000sqft&lt;/a&gt;. I'm sure we were neck-and-neck with the Trenton Police Department, so congratulations to them for their hard work and modular working environment.&lt;br /&gt;&lt;br /&gt;Let us remember that in the world of working in a trailer, everybody is a winner!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-8395180056960511594?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/8395180056960511594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=8395180056960511594' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/8395180056960511594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/8395180056960511594'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2007/10/i-work-in-almost-award-winning-trailer.html' title='I Work in an Almost Award Winning Trailer'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_XnHVrPnrx7o/RwJUUzLcbCI/AAAAAAAAAAs/7PzxDi3LIs0/s72-c/mobi-award-of-distinction-2007.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-5360995121750557297</id><published>2007-09-19T22:54:00.001-04:00</published><updated>2008-12-09T23:03:22.341-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='floating point'/><title type='text'>To my noname friend: atoi and atof as they should never be done</title><content type='html'>Sometimes, when I get bored, I spend an hour or so reinventing the wheel. Earlier tonight I was asked how code like &lt;span style="font-family:courier new;"&gt;atoi&lt;/span&gt; worked. A quick look at an ASCII table and a few multiply-accumulates later, we have something like:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;pre&gt;/* atoi - christopher.watford@gmail.com */&lt;br /&gt;/* PUBLIC DOMAIN */&lt;br /&gt;long atoi(const char *value) {&lt;br /&gt;  long ival = 0, c, n = 1, i = 0, oval;&lt;br /&gt;  for( ; c = value[i]; ++i) /* chomp leading spaces */&lt;br /&gt;    if(!isspace(c)) break;&lt;br /&gt;  if(c=='-' || c=='+') { /* chomp sign */&lt;br /&gt;    n = (c!='-' ? n : -1); i++;&lt;br /&gt;  }&lt;br /&gt;  while(c = value[i++]) { /* parse number */&lt;br /&gt;    if(!isdigit(c)) return 0;&lt;br /&gt;    oval = ival; /* save ival for overflow detection */&lt;br /&gt;    ival = (ival * 10) + (c - '0'); /* mult/accum */&lt;br /&gt;    if(ival &amp;lt; oval) { /* report overflow/underflow */&lt;br /&gt;      errno = ERANGE;&lt;br /&gt;      return (n&amp;gt;0 ? LONG_MAX : LONG_MIN);&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;  return (n&amp;gt;0 ? ival : -ival);&lt;br /&gt;}&lt;/pre&gt;&lt;/blockquote&gt;Yes, this is quite ugly, and if I ever catch you writing something this cryptic I'll force a 15 page code review on you. However, one can tell how much fun &lt;span style="font-family:courier new;"&gt;atoi &lt;/span&gt;actually is once you take into account error checking!&lt;br /&gt;&lt;br /&gt;Naturally our conversation drifted to &lt;span style="font-family:courier new;"&gt;atof&lt;/span&gt;--well in his defense I drifted to &lt;span style="font-family:courier new;"&gt;atof&lt;/span&gt;--and I decided I should write a compliant implementation. As it turns out implementing overflow and underflow checking for floating point numbers is much harder (and trickier too!) than for integers. Below are the pretty printed sources to both my &lt;span style="font-family:courier new;"&gt;atoi &lt;/span&gt;and &lt;span style="font-family:courier new;"&gt;atof &lt;/span&gt;implementations, along with links to download. They are in the public domain and you should use them at your own risk, because if I were to catch you using either of these I will hold a code review so harsh it would make a death row inmate cry.&lt;br /&gt;&lt;blockquote&gt;&lt;a href="http://www.privatepaste.com/100US057kT"&gt;View &lt;span style="font-family:courier new;"&gt;atoi&lt;/span&gt; source&lt;/a&gt; (&lt;a href="http://dorm.tunkeymicket.com/c/atoi.c"&gt;download&lt;/a&gt;)&lt;br /&gt;&lt;a href="http://www.privatepaste.com/221G9LZi0L"&gt;View &lt;span style="font-family:courier new;"&gt;atof&lt;/span&gt; source&lt;/a&gt; (&lt;a href="http://dorm.tunkeymicket.com/c/atof.c"&gt;download&lt;/a&gt;)&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-5360995121750557297?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/5360995121750557297/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=5360995121750557297' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/5360995121750557297'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/5360995121750557297'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2007/09/to-my-noname-friend-atoi-and-atof-as.html' title='To my noname friend: atoi and atof as they should never be done'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-2265663271278563312</id><published>2007-08-20T15:04:00.004-04:00</published><updated>2010-02-16T23:30:58.323-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran'/><title type='text'>Fun with FORTRAN intrinsics and portability</title><content type='html'>When porting code from one compiler to the next, you run into all sorts of fun syntactical issues, gotchas with floating point handling, and how each maintainer semantically interpreted the standard.&lt;br /&gt;&lt;br /&gt;When porting code from one runtime library to the next, you run into even more fun! Who says the API of your favorite function has not changed? Perhaps you no longer can reference some functions. What could you do to mitigate these risks?&lt;br /&gt;&lt;br /&gt;I stumbled across some code that attempted to mitigate these risks associated with the Compaq FORTRAN non-standard (yet invaluable) intrinsic &lt;span style="font-family:courier new;"&gt;SLEEP&lt;/span&gt; by calling out to the C Runtime Library's &lt;span style="font-family:courier new;"&gt;sleep&lt;span style="font-family:georgia;"&gt; routine (compliant under &lt;/span&gt;&lt;/span&gt;ISO/IEC 9945-1:1990, "POSIX.1")&lt;span style="font-family:courier new;"&gt;&lt;span style="font-family:georgia;"&gt;. As the code progressed through the years, the original maintainers noted that on Windows, the sleep routine was renamed to &lt;span style="font-family:courier new;"&gt;Sleep&lt;/span&gt;. A simple change to the interface definition fixed the linking issues:&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;pre&gt;&lt;span style="font-weight: bold;"&gt;interface&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;subroutine &lt;/span&gt;SLEEP(seconds)&lt;br /&gt;&lt;span style="color: rgb(0, 153, 0);"&gt;!DEC$ATTRIBUTES DECORATE, STDCALL, ALIAS:'Sleep' :: SLEEP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;integer*4&lt;/span&gt; :: seconds&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;end subroutine&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;end interface&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;However, careful users would notice that this change (as an attempt to use the more stable C RTL version of sleep) has an unexpected side effect. MSDN states that the single parameter given to &lt;span style="font-size:100%;"&gt;Sleep &lt;/span&gt;is actually, "The minimum time interval for which execution is to be suspended, &lt;span style="font-weight: bold;"&gt;in milliseconds.&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;So, code that once called &lt;span style="font-family:courier new;"&gt;SLEEP(1)&lt;/span&gt; or &lt;span style="font-family:courier new;"&gt;SLEEP(5)&lt;/span&gt; expecting to regain control in 1s and 5s respectively, now sleeps for 1ms and 5ms respectively. This is well beneath the timeslice/quantum given to a process (6-55ms on Windows), effectively making the call an inefficient &lt;span style=";font-family:courier new;font-size:100%;"&gt;Sleep(0)&lt;/span&gt; (which in and of itself is an inefficient thread yield!). The correct action is to consult the Intel FORTRAN Libraries reference and note that in the portability library is a &lt;span style=";font-family:courier new;font-size:100%;"&gt;SLEEP &lt;/span&gt;function that replicates the non-standard intrinsic found for Compaq, and will work across all platforms Intel's FORTRAN compiler is supported. This is not a great solution, but it is also not the worst solution (hacking a layer on top of the Windows Sleep function to multiply the parameter by 1000).&lt;br /&gt;&lt;br /&gt;As an aside, it is a bit of a programming error to rely on sleep for hard timing of any interval other than integer multiples of the timeslice/quantum (plus some amount of jitter). It is also a bit of a programming error to ignore changes to API's when moving compilers and libraries and operating systems.&lt;br /&gt;&lt;br /&gt;Too bad compilers cannot catch either of these...&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-2265663271278563312?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/2265663271278563312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=2265663271278563312' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/2265663271278563312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/2265663271278563312'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2007/08/fun-with-fortran-intrinsics-and.html' title='Fun with FORTRAN intrinsics and portability'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-453953963196090372</id><published>2007-07-25T11:10:00.003-04:00</published><updated>2010-02-16T23:34:58.916-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>MPICH.NT, MPICH2, and TCP Offloading (continued)</title><content type='html'>Well we tried updated drivers for the NC373i but with no avail. We were still seeing TOE errors which resulted in MPICH.NT and MPICH2 hanging. Luckily the machines have second NIC's, NC380T PCIe DP Multifunc Gigabit Server Adapters. Unluckily for us, those network cards exhibited the same problem as the embedded NC373i.&lt;br /&gt;&lt;br /&gt;This leads me to believe that there is a problem with the Windows 2003 R2 Scalable Networking Pack. Specifically with the Chimney TCP Offloading portion. There may even be an issue in MPICH.NT and MPICH2 and Windows 2003 R2's SNP. However, that just seems highly unlikely as MPICH.NT and MPICH2 are wildly different under the hood.&lt;br /&gt;&lt;br /&gt;We've initiated a case with Microsoft to get to the bottom of this issue. Meanwhile our new servers have TOE disabled, which isn't bad, but it isn't good either.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-453953963196090372?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/453953963196090372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=453953963196090372' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/453953963196090372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/453953963196090372'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2007/07/mpichnt-mpich2-and-tcp-offloading_25.html' title='MPICH.NT, MPICH2, and TCP Offloading (continued)'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-5295404638415544849</id><published>2007-07-23T10:39:00.001-04:00</published><updated>2008-12-09T22:56:42.000-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='networking'/><title type='text'>MPICH.NT, MPICH2, and TCP Offloading</title><content type='html'>Recently we came across a strange problem where on some new machines MPICH.NT and MPICH2 both would fail to correctly operate across machines. On a single machine there were no problems, and actually the application partially worked under MPICH.NT.&lt;br /&gt;&lt;br /&gt;My initial guess was MPICH.NT did not play well with Windows 2003 Server R2. Previously we have only had Windows 2000 Server for the MPI jobs, so it seemed logical that changing the server OS would cause some issues. I recompiled the application for MPICH2 (bigger, newer, better) and found the application "hung" in exactly the same fashion as under MPICH.NT.&lt;br /&gt;&lt;br /&gt;So now I had a common failure mode across two versions of MPICH (which are wildly different under the hood) on the same OS. I started running MPICH in debug/verbose mode and spent a lot of time looking at the thousands of lines of output and noticed that both under MPICH.NT and MPICH2 they came to the same place and halted, only I couldn't tell where in the code this was.&lt;br /&gt;&lt;br /&gt;You may think this is where I fired up the parallel debugger and did wild and crazy things, but that takes too much time. I went with good ole fashioned printf debugging. I ended up getting output like the following:&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;[0] calling MPI_Bcast ...&lt;br /&gt;[1] calling MPI_Bcast ...&lt;br /&gt;[2] calling MPI_Bcast ...&lt;br /&gt;[3] calling MPI_Bcast ...&lt;br /&gt;[4] calling MPI_Bcast ...&lt;br /&gt;...&lt;br /&gt;[N-2] calling MPI_Bcast ...&lt;br /&gt;[N-1] calling MPI_Bcast ...&lt;/blockquote&gt;Where [X] is the process number and if the call was successful the MPI_STATUS code would be returned on the next line, however, none of these calls returned. An important thing to note is these MPI_Bcast calls were sending buffers of 150MiB+, which is quite large. This fact drove me to check on the network card settings.&lt;br /&gt;&lt;br /&gt;While poking around in the network card settings, I noticed two things:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Network card drivers were out of date&lt;/li&gt;&lt;li&gt;Network card status tool counters showed some errors in TCP Offloading&lt;/li&gt;&lt;/ol&gt;Using the information that TOE had reported errors in the past, I reran the application and watched the TOE error counters. Sure enough, when that MPI_Bcast line was reached, the TOE error counters incremented by one. So I went and disabled TOE on my two test machines and reran the application.&lt;br /&gt;&lt;br /&gt;Boom, problem solved. Well...not really.&lt;br /&gt;&lt;br /&gt;Disabling TOE will kill performance for other applications that do not have an issue with offloading. However, I cannot upgrade the drivers for the network card (even as a test) without going through 10 miles of red tape. That is neither here nor there, the important part is the problem has been identified and can be solved.&lt;br /&gt;&lt;br /&gt;So if you have an HP NC373i Multifunction Gigabit Ethernet Adapter and experience problems with MPICH or MPICH2 on Windows, it is probably the TCP Offloading Engine. Try updating your drivers or disabling TOE to solve the issue. I will post an update if the latest drivers indeed fix this issue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-5295404638415544849?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/5295404638415544849/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=5295404638415544849' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/5295404638415544849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/5295404638415544849'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2007/07/mpichnt-mpich2-and-tcp-offloading.html' title='MPICH.NT, MPICH2, and TCP Offloading'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-7637069769359314727</id><published>2007-07-17T16:29:00.002-04:00</published><updated>2010-02-16T23:34:00.125-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><title type='text'>CNN, Kashiwazaki NPP, and the 2007 Niigata Earthquake</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;"&gt;(ed: I normally don't blog about non-technical issues, but this chaps my cheeks to no end)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you haven't heard yesterday an earthquake happened of the coast off the Niigata prefecture in Japan. It had a magnitude of 6.8 and caused serious problems for the Kashiwazaki-Kariwa NPP. A transformer caught fire at unit 3 (there are 7 units) and radioactive liquids spilled into the ocean. This is obviously a serious event and should be treated as such, however, the news coverage was yellow journalism at best. All of the initial reports were sensationalist and biased with little facts (partially due to the tight lipped nature of TEPCO) to support any of their claims.&lt;br /&gt;&lt;br /&gt;To see how bad the yellow journalism got just read the following headline blurb:&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-weight: bold;"&gt;Radioactive leak, tremors follow Japan quake&lt;/span&gt;&lt;br /&gt;A strong earthquake struck northwestern Japan today, causing a radioactive leak and fire at one of the world's most powerful nuclear power plants. Eight people were killed and hundreds injured. The plant leaked about 315 gallons of water, according to a Tokyo Electric official.&lt;/blockquote&gt;So, how many casualties were a result of the radioactive leak and fire:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;8 deaths and hundreds of injuries&lt;/li&gt;&lt;li&gt;6 deaths and hundreds of injuries&lt;/li&gt;&lt;li&gt;1 death and tens of injuries&lt;/li&gt;&lt;li&gt;0 deaths and 0 injuries&lt;/li&gt;&lt;/ul&gt;If you guessed 0 and 0 you would be right!&lt;br /&gt;&lt;br /&gt;But wait...&lt;br /&gt;&lt;br /&gt;Didn't the blurb say that eight people died and hundreds were injured by the radioactive leak and fire?! Why yes, yes it did. This is far from ethical, yet CNN went right ahead and posted that online.&lt;br /&gt;&lt;br /&gt;Don't believe me? Check out this screenshot of CNN's misrepresentation of the Kashiwazaki-Kariwa leak and fire.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_XnHVrPnrx7o/Rp0p2cnFhVI/AAAAAAAAAAM/KMc5RB4o5rE/s1600-h/bad-journalism.jpg"&gt;&lt;img style="cursor: pointer;" src="http://2.bp.blogspot.com/_XnHVrPnrx7o/Rp0p2cnFhVI/AAAAAAAAAAM/KMc5RB4o5rE/s320/bad-journalism.jpg" alt="" id="BLOGGER_PHOTO_ID_5088269169368335698" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-7637069769359314727?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/7637069769359314727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=7637069769359314727' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/7637069769359314727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/7637069769359314727'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2007/07/cnn-kashiwazaki-npp-and-2007-niigata.html' title='CNN, Kashiwazaki NPP, and the 2007 Niigata Earthquake'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_XnHVrPnrx7o/Rp0p2cnFhVI/AAAAAAAAAAM/KMc5RB4o5rE/s72-c/bad-journalism.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-5635476682335199114</id><published>2007-07-11T10:56:00.001-04:00</published><updated>2010-02-16T23:32:48.017-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><title type='text'>Lessons Learned Flying Space Available</title><content type='html'>Flying space available is great. It is cheap, fun, and can be very flexible. However, when things get busy you can find yourself in trouble. Space available travel is prioritized and if you aren't an employee of an airline, you'll find yourself at the bottom of the pile.&lt;br /&gt;&lt;br /&gt;You can mitigate your troubles by always arriving for the earliest flight possible. Quite often people oversleep and miss the early flights. Waking up at 3:30 AM to possibly catch the 5:00 AM flight might sound awful, but it may be the only way to make it to your destination.&lt;br /&gt;&lt;br /&gt;If you are not able to make it onto a flight you are listed for, you are automatically rolled over to the next flight. However, twice I have not been rolled over for one reason or another and had to be manually moved. Always double check to make sure you have been added to the next flight.&lt;br /&gt;&lt;br /&gt;When you miss a flight, it may seem tempting to use the 1-800 number most airlines have to change to a different option. However, I've found they tend to not get the change made properly. Always use the gate agents to make the change and quite often they will also suggest alternate routes (if only to get you off their back).&lt;br /&gt;&lt;br /&gt;If you happen to be woefully unlucky and are bumped from one day to the next save your boarding pass from the day before. You can use that to skip the lines at the ticketing counter and go straight through security. Once you get to the gate double check that you are indeed listed on the flight and get yourself a new flight coupon (or if really lucky a boarding pass).&lt;br /&gt;&lt;br /&gt;The last bit of advice is to be as sociable as possible. Hang out with the gate agents, any flight attendants who are stuck, and yuck it up with other space available passengers. I've met so many great people sitting around in airports waiting on flights. Some of these people can even help you out if you're really stuck, so it's worth being polite and friendly. Getting somebody a $3 airport coffee can go a long way towards making it onto a flight.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-5635476682335199114?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/5635476682335199114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=5635476682335199114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/5635476682335199114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/5635476682335199114'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2007/07/lessons-learned-flying-space-available.html' title='Lessons Learned Flying Space Available'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-1772145737327309376</id><published>2007-06-24T11:02:00.001-04:00</published><updated>2008-12-09T22:53:56.956-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='COM Interop'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Conflicting COM Interop DLL Names</title><content type='html'>Recently our job scheduling software got a version bump from 5 to 6 and I'm in charge of bringing our support libraries up to date. A quick look into the changelog showed that I would have to do some under the hood work, but I have a relatively abstracted class library which would be easy to add support for version 6.&lt;br /&gt;&lt;br /&gt;Not so fast. The job scheduler uses COM objects as its method of interaction, and .Net has to build an interop assembly to talk to it. The easy way, Add Reference -&gt; COM, should work. It should work, provided the COM DLL's have different names. Thanks to Murphy's Law, the two DLL's, while under different folders, have the same name!&lt;br /&gt;&lt;br /&gt;.Net generates Interop.X.dll and Interop.X.dll, even though the two are in different folders and represent different versions, solely because our job scheduler's COM DLL is X.dll, in both folders. While this is not necessarily their fault, it certainly makes the lives of those of us who do integration harder (their COM object model is pretty bad to start with).&lt;br /&gt;&lt;br /&gt;Thankfully, Microsoft provides the means to &lt;a href="http://msdn2.microsoft.com/en-us/library/aa302338.aspx"&gt;create your own Primary Interop Assembly from a DLL&lt;/a&gt;. Using TlbImp you can create your own COM Interop DLL, complete with a non-conflicting name and namespace.&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;TlbImp version5\X.dll /namespace:X /out:Interop.X.dll&lt;br /&gt;TlbImp version6\X.dll /namespace:X6 /out:Interop.X6.dll&lt;/blockquote&gt;Now I can import these two conflict free and deal with more important issues, like the poor documentation included with the COM library.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-1772145737327309376?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/1772145737327309376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=1772145737327309376' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/1772145737327309376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/1772145737327309376'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2007/06/conflicting-com-interop-dll-names.html' title='Conflicting COM Interop DLL Names'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-6961246601275300223</id><published>2007-06-20T10:20:00.002-04:00</published><updated>2010-02-16T23:35:26.438-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>KB925902: X is not a valid Win32 application</title><content type='html'>Recently we've had a number of new hires and interns come in as the business expands and schools get out. They've been given new computers, Core 2 Duo's and Xeon 51XX's. Last week a few users reported no longer being able to run certain older applications. Windows XP SP2 stated that "X is not a valid Win32 application."&lt;br /&gt;&lt;br /&gt;Yet earlier in the day or in the week they had been able to run the same executable without any issues. On my XPSP2 machine I could run the executables fine, and Win2ksp4 had no problems either. At this point a massive search for "what changed" began.&lt;br /&gt;&lt;br /&gt;The executables were compiled on MSVS6 and Compaq Visual FORTRAN, so perhaps it was their newer processors coupled with the way the executables were compiled. Sure enough recompiling under MSVS8 or Intel Visual FORTRAN allowed them to run the executables. However, one of the executables still had a problem. Thankfully, we got a new error (I hate old errors):&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;XXXXX.EXE - Illegal System DLL Relocation&lt;/span&gt;&lt;br /&gt;The system DLL user32.dll was relocated in memory. The application will not run properly. The relocation occurred because the DLL C:\WINNT\system32\HHCTRL.OCX occupied an address range reserved for Windows system DLLs. The vendor supplying the DLL should be contacted for a new DLL.&lt;/blockquote&gt;Lovely, a Windows OCX control bumped user32. A quick google search brought up KB925902 as the offending patch. I went to one of the machines to look for the patch, but it appeared from Add/Remove Programs that this patch was never installed!&lt;br /&gt;&lt;br /&gt;Before giving up saying the patch is not installed, a useful thing to note is you can browse to &lt;span style="font-family:courier new;"&gt;%WINDIR%&lt;/span&gt; and take a look at all the NTUNINSTALL$KB* folders to see every patch that has been applied. This list is much more exhaustive than the Add/Remove Programs list.&lt;br /&gt;&lt;br /&gt;Sure enough, there was &lt;span style="font-family:courier new;"&gt;%WINDIR%\ntuninstall$kb925902\&lt;/span&gt;, and after uninstalling the patch, everything was fine on these machines. I wonder what KB925902 could have possibly changed to cause such a colossal error.&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;MS07-017: Vulnerability in GDI could allow remote code execution&lt;/blockquote&gt;So, a security bug in the &lt;span style="font-weight: bold;"&gt;graphics subsystem&lt;/span&gt; gets a patch which affects the ability to run console applications? &lt;a href="http://support.microsoft.com/kb/925902"&gt;You should read the article on MS07-017 to get a feel for how many subsystems are affected by their patch&lt;/a&gt;. Thank you Windows for making my life so wonderful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-6961246601275300223?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/6961246601275300223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=6961246601275300223' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/6961246601275300223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/6961246601275300223'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2007/06/kb925902-x-is-not-valid-win32.html' title='KB925902: X is not a valid Win32 application'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-2664026133486859081</id><published>2007-06-13T14:47:00.003-04:00</published><updated>2010-02-16T23:31:15.705-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran'/><title type='text'>New Intel Visual FORTRAN 10.0.025</title><content type='html'>Intel Visual FORTRAN 10.0.025 was just released, and of course I got my hands on it. I'd had troubles in 9.1 that were "Targeted to Fix," but I needed the codes compiled as soon as possible. So I install IVF10, and get started with my first project. I press F7 and wait...&lt;br /&gt;&lt;br /&gt;Crash.&lt;br /&gt;&lt;br /&gt;The new version of IVF has a static verification component. It turns out that my project (about 105KLOC) causes the verification tool to run into the per-process memory limit (2GiB). Talk about cool. I've now broken two versions of the Intel compiler right out of the box!&lt;br /&gt;&lt;br /&gt;I can't really blame Intel, I would imagine full static verification of a project of that size would be hard to do in 2GiB of memory. Besides, it is only a nicety, so I disabled it and compiled again. Without static verification it worked, however, when I went to run, my program reported that it could not find a file.&lt;br /&gt;&lt;br /&gt;This file is pulled from an environment variable and as soon as I stepped through the application it became obvious what happened. Visual Studio's Environment configuration option for debugging had delimited the key value pair lines with \r\n instead of just \n. A temporary solution for this problem is to bring up a C++ project and input the environment there, then copy and paste the string into the IVF10 project's Environment setting. Not sure if this is an IVF10 or VS2005 issue.&lt;br /&gt;&lt;br /&gt;I am now known at work as the &lt;span style="font-weight: bold;"&gt;code killer&lt;/span&gt;. Put something in front of me and I'll break it. Whoops.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-2664026133486859081?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/2664026133486859081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=2664026133486859081' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/2664026133486859081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/2664026133486859081'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2007/06/new-intel-visual-fortran-100025.html' title='New Intel Visual FORTRAN 10.0.025'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-3332873580761355519</id><published>2007-06-12T11:58:00.003-04:00</published><updated>2010-02-16T23:33:12.996-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><title type='text'>.Net Deployment Build Error HRESULT = '80004005'</title><content type='html'>I've got a Visual Studio 2005 Deployment project for an application I distribute internally, and came across this crazy error while rebuilding the MSI file.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;------ Starting pre-build validation for project 'MyProjectInstall' ------&lt;br /&gt;ERROR: An error occurred while validating.  HRESULT = '80004005'&lt;br /&gt;------ Pre-build validation for project 'MyProjectInstall' completed ------&lt;/pre&gt;&lt;/blockquote&gt;No other clues as to the actual problem. Some googling revealed that this has to do with a project building with references it does not need (or in my case stale references). A quick fix is to go to the offending 'Primary Output' project, and remove all of its non-Microsoft references. Then add them one by one until the project compiles. At this point your deployment project should compile without any hassles.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-3332873580761355519?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/3332873580761355519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=3332873580761355519' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/3332873580761355519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/3332873580761355519'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2007/06/net-deployment-build-error-hresult.html' title='.Net Deployment Build Error HRESULT = &apos;80004005&apos;'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-2150894194279290940</id><published>2007-06-08T13:59:00.000-04:00</published><updated>2007-07-24T14:32:39.485-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Drive Letter Economics</title><content type='html'>On Windows there is a fun property of the command line (not quite DOS) where you cannot change directory to a UNC path. This effectively makes it impossible to set your working directory to a UNC path from a batch file. To address this issue Microsoft has two methods of switching to a UNC path.&lt;br /&gt;&lt;br /&gt;You can &lt;span style="font-weight: bold;"&gt;NET USE&lt;/span&gt; the path as a drive letter. However, you have to be sure that the drive letter you chose is not in use. When running in a large multi-user environment, you can see how this would become troublesome. More importantly, &lt;span style="font-weight: bold;"&gt;NET USE &lt;/span&gt;is semi-permanent, living for as long as the computer is on. You must unuse the drive letter assignment to free this up for other people.&lt;br /&gt;&lt;br /&gt;Your other option is &lt;span style="font-weight: bold;"&gt;pushd&lt;/span&gt; which pushes a path name onto a virtual stack, making the path you specify the current working directory. If you &lt;span style="font-weight: bold;"&gt;pushd&lt;/span&gt; a UNC path, it is assigned a drive letter from the pool of open drive letters. Now, this too is semi-permanent (i.e. outlives the cmd instance it was done in). This assignment lives on until you unuse it or use &lt;span style="font-weight: bold;"&gt;popd&lt;/span&gt;. The more vexing part is on Windows 2000 Server these drive letter assignments affect everyone who uses the machine.&lt;br /&gt;&lt;br /&gt;Let's say user A has a script that calls &lt;span style="font-weight: bold;"&gt;pushd&lt;/span&gt; without &lt;span style="font-weight: bold;"&gt;popd&lt;/span&gt;&lt;span&gt;, if his script gets run enough times, eventually Windows 2000 Server machines begin running out of drive letters. So when user B's script runs on a machine without free drive letters, they are greeted with this fun message:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;C:\&gt;PUSHD \\machine\unc\path\here\&lt;br /&gt;' ' is an invalid current directory path.  UNC paths are not supported.&lt;/pre&gt;&lt;/blockquote&gt;Aren't you glad you get an error message which reflects the problem?&lt;br /&gt;&lt;br /&gt;Now on Windows 2003 Server this problem is non-existent. Users can only muck up drive letter assignments for themselves, not for everyone logged in to a machine. However, upgrading production servers to another operating system is not always a valid fix. The problem does not go away, just users are insulated from other users.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;The correct solution is to follow the best practices and have a matching &lt;span style="font-weight: bold;"&gt;popd&lt;/span&gt; for ever &lt;span style="font-weight: bold;"&gt;pushd&lt;/span&gt; call you make. Of course, it wouldn't be a best practice if nobody ignored it.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-2150894194279290940?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/2150894194279290940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=2150894194279290940' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/2150894194279290940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/2150894194279290940'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2007/06/drive-letter-economics.html' title='Drive Letter Economics'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-4875861482036383888</id><published>2007-06-01T11:24:00.003-04:00</published><updated>2010-02-16T23:31:33.137-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='standards'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran'/><title type='text'>Premature Optimization is the Root of all Evil</title><content type='html'>Donald Knuth was indeed right when he said that, "premature optimization is the root of all evil." In a few FORTRAN codes I have, the original programmers made use of boolean short circuiting. This technique is extremely popular in languages which support it. If you are unfamiliar with short circuiting it goes a little something like this, given:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;if (expression1 .and. expression2 ... .and. expressionN) then&lt;br /&gt; ! some code here&lt;br /&gt;end if&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Short circuiting relies on the fact that the language will evaluate boolean expressions in order of precedence, from left to right. So if and only if &lt;span style="font-family:courier new;"&gt;expression1&lt;/span&gt; is &lt;span style="font-family:courier new;"&gt;.TRUE.&lt;/span&gt; then &lt;span style="font-family:courier new;"&gt;expression2&lt;/span&gt; will be evaluated. If and only if &lt;span style="font-family:courier new;"&gt;expression2&lt;/span&gt; is &lt;span style="font-family:courier new;"&gt;.TRUE.&lt;/span&gt; then &lt;span style="font-family:courier new;"&gt;expression3&lt;/span&gt; is evaluated, and so on and so forth. If, from left to right, any expression is found to be &lt;span style="font-family:courier new;"&gt;.FALSE.&lt;/span&gt; then the entire If statement is considered to be &lt;span style="font-family:courier new;"&gt;.FALSE.&lt;/span&gt;, which in boolean algebra makes sense.&lt;br /&gt;&lt;br /&gt;A common use of boolean short circuiting would be to protect against out of bounds array access in loops which may not stop at the end of an array. For instance:&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;real, dimension(:), allocatable :: myArray&lt;br /&gt;allocate(myArray(n))&lt;br /&gt;...&lt;br /&gt;do i = 1,m&lt;br /&gt;if (i .lt. n .and. myArray(i) .op. someVal) then&lt;br /&gt;  ! do something&lt;br /&gt;end if&lt;br /&gt;end do&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;Many languages support short circuiting by design, many support it by consensus, however FORTRAN does not make short circuiting part of the design and there is no consensus on its adoption. The above example works fine under Compaq Visual FORTRAN, but if you enable bounds checking on Intel Visual FORTRAN you get a run-time error.&lt;br /&gt;&lt;br /&gt;Both CVF and IVF are following the standard with their interpretations, FORTRAN does not specify how a compiler should implement the above if statement. However, often times people adopt the unofficial standards created by compilers which interpret the standard in a certain way. CVF evaluates the statement above left-to-right and applies boolean short circuiting. IVF evaluates all components of the expression before making a decision. Both of these interpretations are correct, but they have interesting implications.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;if (b .op. k .and. somefunc() .op. someval) then&lt;br /&gt;! CVF and IVF may not execute this in the same fashion&lt;br /&gt;end if&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;The problem with the above statement is that if IVF were to evaluate &lt;span style="font-family:courier new;"&gt;somefunc()&lt;/span&gt; before the comparison between &lt;span style="font-family:courier new;"&gt;b&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;k&lt;/span&gt;, potential side effects inside &lt;span style="font-family:courier new;"&gt;somefunc()&lt;/span&gt; could alter &lt;span style="font-family:courier new;"&gt;b&lt;/span&gt; or &lt;span style="font-family:courier new;"&gt;k&lt;/span&gt;, fundamentally changing the meaning of the statement. Worse still if the code was originally defined for CVF, the side effects of &lt;span style="font-family:courier new;"&gt;somefunc()&lt;/span&gt; could depend on being ignored when the comparison between &lt;span style="font-family:courier new;"&gt;b&lt;/span&gt; and &lt;span style="font-family:courier new;"&gt;k&lt;/span&gt; is &lt;span style="font-family:courier new;"&gt;.FALSE.&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;As a programmer you should mind the relevant standards and strive to rely on as few platform or compiler specific behaviors. The two above examples could be rewritten with their intentions preserved in only a few extra lines.&lt;br /&gt;&lt;blockquote&gt;&lt;pre&gt;real, dimension(:), allocatable :: myArray&lt;br /&gt;allocate(myArray(n))&lt;br /&gt;...&lt;br /&gt;do i = 1,m&lt;br /&gt;if (i .lt. n) then&lt;br /&gt;  if (myArray(i) .op. someVal) then&lt;br /&gt;     ! all FORTRAN compilers will get here for the same&lt;br /&gt;     ! reason&lt;br /&gt;  end if&lt;br /&gt;end if&lt;br /&gt;end do&lt;br /&gt;...&lt;br /&gt;if (b .op. k) then&lt;br /&gt;if (somefunc() .op. someval) then&lt;br /&gt;  ! all FORTRAN compilers will get here for the same&lt;br /&gt;  ! reason&lt;br /&gt;end if&lt;br /&gt;end if&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;So pay attention to the fun problems you may create for the guy who inherits your code when you get all crazy. It has been said that 60% of programming is maintaining your code, however, I find in my job that number is closer to 80 or even 90%. Don't make your life any harder than it already is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-4875861482036383888?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/4875861482036383888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=4875861482036383888' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4875861482036383888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4875861482036383888'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2007/06/premature-optimization-is-root-of-all.html' title='Premature Optimization is the Root of all Evil'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-7025381614424111093</id><published>2007-05-31T18:52:00.001-04:00</published><updated>2010-02-16T23:32:32.470-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>.Net XmlSerializer and InvalidCastException</title><content type='html'>Many of our applications work via a plugin architecture, which allows us to be flexible in a lot of ways. A while back I ran into a problem with XML serialization and our plugin system. The error was confusing and the solution was non-obvious. The exception I recieved was the following:&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;pre&gt;System.InvalidOperationException: There was an error generating the XML document.&lt;br /&gt;---System.InvalidCastException: Unable to cast object&lt;br /&gt;of type '&lt;span style="font-weight: bold;"&gt;MyNamespace.Settings&lt;/span&gt;' to type '&lt;span style="font-weight: bold;"&gt;MyNamespace.Settings&lt;/span&gt;'. at&lt;br /&gt;Microsoft.Xml.Serialization.GeneratedAssembly.&lt;br /&gt;  XmlSerializationWriterSettings.Write3_Settings(Object o)&lt;/pre&gt;&lt;/blockquote&gt;I've made bold the confusing (and vexing!) part of the error. Apparently the XmlSerializer could not cast a type to itself? Worse still, the MSDN documentation does not list InvalidCastException as a common exception (which normally lists the boneheaded mistake your program made).&lt;br /&gt;&lt;br /&gt;After a large amount of googling, I came across a snippet--which if you place in &lt;span style="font-family:courier new;"&gt;App.Config&lt;/span&gt;--makes the error disappear (but is not meant to remove any errors):&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;pre&gt;&amp;lt;system.diagnostics&amp;gt;&lt;br /&gt;  &amp;lt;switches&amp;gt;&lt;br /&gt;     &amp;lt;add name="XmlSerialization.Compilation" value="4" /&amp;gt;&lt;br /&gt;  &amp;lt;/switches&amp;gt;&lt;br /&gt;&amp;lt;/system.diagnostics&amp;gt;&lt;/pre&gt;&lt;/blockquote&gt;What the "4" means, I could not tell you, but this magical block of code solved my problem. However, I am never satisfied with hacks like this, so I dug deeper. The root cause apparently is due to how I load my plugin and where the assembly is that called the XmlSerializer.&lt;br /&gt;&lt;br /&gt;In .Net there are 3 assembly load contexts (plus assemblies can be loaded without context), each causes your types to be slightly different. If your plugin is loaded in the Load-From context (as mine was), the type MyNamespace.Settings is "branded" (so to speak) with the context it was resolved in. If your plugin uses an XmlSerializer, the temporary assemblies generated to speed (de)serialization are part of the Load context (or perhaps are without context, I haven't found out for sure). Therefore the type the XmlSerializer attempts to create is different in context from the type in your plugin.&lt;br /&gt;&lt;br /&gt;I found the most effective strategy to combat this interesting error is to always use the Load context. This requires your plugin DLLs lie under the ApplicationBase or PrivateBinBase paths. All in all this is the best solution, considering Side-by-Side is the new Microsoft way of deploying applications and DLLs (to avoid DLL Hell).&lt;br /&gt;&lt;br /&gt;Here is a short snippet of what the plugins may look like in your App.Config:&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;pre&gt;&amp;lt;plugins&amp;gt;&lt;br /&gt;  &amp;lt;plugin&lt;br /&gt;     name="My Plugin"&lt;br /&gt;     assemblyName="MyPlugin, Version=1.0.0.0,&lt;br /&gt;     Culture=neutral, PublicKeyToken=deadbeefbaadf00d" /&amp;gt;&lt;br /&gt;&amp;lt;/plugins&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;You could then load this plugin (after reading in the appropriate ConfigurationSection) like so, to ensure XmlSerializer works in your plugin:&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;pre&gt;PluginsSection pluginsSection =&lt;br /&gt;  config.GetSection("plugins") as PluginsSection;&lt;br /&gt;foreach(PluginElement elt in pluginsSection.Plugins)&lt;br /&gt;{&lt;br /&gt;  Assembly pluginAsm = Assembly.Load(elt.AssemblyName);&lt;br /&gt;  /* Reflect across the assembly looking for types with&lt;br /&gt;   * [MyAppPluginAttribute] or those that implement&lt;br /&gt;   * IMyAppPlugin, so an assembly can contain more than&lt;br /&gt;   * one plugin.&lt;br /&gt;   */&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/blockquote&gt;The .Net world has many intricacies and most seem to stem from this notion of Assemblies and satellite assemblies and manifests and ligers and unicorns, so don't be discouraged if you have a hard time working it all out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-7025381614424111093?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/7025381614424111093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=7025381614424111093' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/7025381614424111093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/7025381614424111093'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2007/05/net-xmlserializer-and.html' title='.Net XmlSerializer and InvalidCastException'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-6496245232166250698</id><published>2007-05-30T19:10:00.000-04:00</published><updated>2007-05-30T19:25:49.940-04:00</updated><title type='text'>Tracking down network gremlins</title><content type='html'>I've been besieged as of late by gremlins somewhere in the ether. They have stolen our token rings and have set fire to my home. Actually, it appears our file server is crapping out (again with those technical terms) at random intervals.&lt;br /&gt;&lt;br /&gt;Well, how do I know it is the file server?&lt;br /&gt;&lt;br /&gt;I did not know at first, the errors returned from FORTRAN applications were code 30, which basically means it could not open a file, but it did not know why. Later, I received some errors during reading and writing, which confirmed an issue with the file server (and not the application).&lt;br /&gt;&lt;br /&gt;However, there were no useful error codes being returned!&lt;br /&gt;&lt;br /&gt;Instead of rewriting these older applications to return the system error codes (newer ones include said detail) I wrote a canary application (in C if you must know). This tester would attempt to open a few files thousands of times in random order. Then read, write, read+write to each of these files thousands of times. It would do all of this in a giant loop, sleeping for a set amount of time at the end. During this loop it would rigorously check the return values of the functions, and die immediately (and loudly!) with the corresponding error code.&lt;br /&gt;&lt;br /&gt;Sure enough it caught the error!&lt;br /&gt;&lt;br /&gt;Wait, now that we know what the error is, why are we getting this error?&lt;br /&gt;&lt;br /&gt;Preliminary analysis had it that the file server was CPU bound during the "hiccup". How could we really know what was the cause? &lt;a href="http://www.sysinternals.com"&gt;Sysinternals &lt;/a&gt;has a lovely suite called PsTools which provides everything you could ever need to monitor processes from the command line. A simple trigger for the canary job to run a PsExec job when it died with an error was implemented:&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;psexec \\machinename pslist -s 90 -r 5 -x&lt;/blockquote&gt;Now we could get some output from the file server as to what it was doing when the job had the "hiccup". This worked well and we were able to identify the offending process (and even the offending thread!), yet that did not solve our problem. It only identified a cause and most likely not even the root cause! Eventually we will drill down to the actual problem and solve that (only to move on to the next issue, phew).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-6496245232166250698?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/6496245232166250698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=6496245232166250698' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/6496245232166250698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/6496245232166250698'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2007/05/tracking-down-network-gremlins.html' title='Tracking down network gremlins'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-4580298338609530679</id><published>2007-05-30T11:04:00.001-04:00</published><updated>2008-12-09T22:57:19.732-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='standards'/><category scheme='http://www.blogger.com/atom/ns#' term='floating point'/><title type='text'>VAX Floating Point Numbers</title><content type='html'>So in the world of old hardware you have the DEC VAX. Big ole honkin' machines from the days of yore. They were introduced a decade before I was born and support for them was withdrawn before I graduated high school. By the time I began interacting with them, they were the old gray mare having been largely replaced by hardware like the DEC Alpha (AXP).&lt;br /&gt;&lt;br /&gt;The transition from VAX to AXP was pretty smooth on OpenVMS and many companies, including the one I work for, made the move. Modern AXP processors are impressive and for a long time held the record for the fastest supercomputers in the United States.&lt;br /&gt;&lt;br /&gt;Part of the allure of the AXP was it's support for data found on the VAX. VAXen came long before the IEEE 754 standard for floating point numbers, so it is not hard to see how they developed their own standard. IBM mainframes and Cray supercomputers both have (popular) floating point formats from around that time. Interestingly the VAX floating point format has some formatting dependencies on the PDP-11 (craaaazy) format, which can really make life hell.&lt;br /&gt;&lt;br /&gt;So why would I bring this up?&lt;br /&gt;&lt;br /&gt;When a company has been using computers for a long time, you end up with a need to store data somewhere. Now data that is a decade old is easy to interact with. Imagine going back another ten years. Imagine another ten. You're now knocking on the door of the advent of (roughly) modern computing. FORTRAN 66 (and later 77) is in its prime. VAXen and IBM mainframes rule the earth! Kidding, but at least VAXen ruled my company.&lt;br /&gt;&lt;br /&gt;The amount of data which has been preserved is staggering. The only issue is, the number of machines which can natively read the data is diminishing rapidly. Compaq (the new DEC) is phasing out support for the AXP in 2004 and transitioning users to the Intel Itanium and Itanium 2 (cue up Itanic jokes). A certain nagging problem with this transition is the loss of native support for the VAX floating point format.&lt;br /&gt;&lt;br /&gt;The two common formats I deal with are the VAX F_Float and G_Float, single and double precision respectively. The F_Float is bias-128 and the G_Float is bias-1024. Both the F and G representations have an implicitly defined hidden-bit normalized mantissa (m) like so:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;0.1mmm...mmm&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;F_Float is held in 32 bits and G_Float is held in 64 bits. Both formats &lt;strike&gt;suffer&lt;/strike&gt;inherit from the PDP-11 memory layout, so the actual bits stored on disk is not true little endian.&lt;br /&gt;&lt;br /&gt;So why is this a problem?&lt;br /&gt;&lt;br /&gt;There are no modern processors (read: with future support) with native support for the VAX format. All of our codes which read in floating point data from old data files must make the conversion from the VAX format to their host format (which in all cases is IEEE754). This conversion is not nice and is in fact lossy.&lt;br /&gt;&lt;br /&gt;IEEE754 S_Float and T_float, single and double precision respectively, cannot exactly represent all VAX floating point data. S_Float is bias-127 and T_Float is bias-1023 (note this is different than F and G). Both S and T have hidden-bit normalized mantissas, however IEEE754 supports "subnormal" or "denormal" forms, where the leading bit could be a 1 or a 0.&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;1.mmm...mmm&lt;/span&gt; (normal)&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;0.mmm...mmm&lt;/span&gt; (subnormal)&lt;/blockquote&gt;This does not bode well for direct conversion between the formats.&lt;br /&gt;&lt;br /&gt;Even if the byte layout was the same, we still have two different forms for floating point numbers. Every time we make the conversion we lose precision. What is even more insidious is that VAX and IEEE754 do not have the same rounding rules (I'm not even sure the VAX has defined rounding rules!). Floating point formats are inherently inexact and how these inexact representations are interpreted with respect to rounding is very important.&lt;br /&gt;&lt;br /&gt;Moreover, even if we overlooked the problems in representation of floating point numbers, what about exceptional numbers like Infinity and the result of a divide by zero operation? The VAX format only defines positive and negative "excess," which while akin to Infinity, causes an exception and cannot be used in math. IEEE754 encodes both positive and negative Infinity and includes a special case for mathematical operations which have no defined result, Not A Number (NaN). IEEE754 supports both quiet NaN's, which always produce NaN, and loud NaN's which throw floating point exceptions.&lt;br /&gt;&lt;br /&gt;Ok, so if we ignore Infinity and NaN we still have a problem. IEEE754 supports positive and negative zero. VAX only supports positive zero. Why is this a problem? Not only is negative zero unrepresentable on the VAX, but many common mathematical operations on IEEE754 can result in a negative zero (say converging from the "left" of zero).&lt;br /&gt;&lt;br /&gt;Wow, so basically we're screwed.&lt;br /&gt;&lt;br /&gt;Or not. The path to go down is one where the data gets converted to the new standard (new being in the last 15 years or so) which is (more-or-less) a universal standard on processors. This is a time consuming task, and one that needs to be approached carefully to ensure a high degree of fidelity. However, it needs to be made to ensure the longevity of both the software and the data.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-4580298338609530679?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/4580298338609530679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=4580298338609530679' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4580298338609530679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/4580298338609530679'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2007/05/vax-floating-point-numbers.html' title='VAX Floating Point Numbers'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-3414590774411508045</id><published>2007-05-29T19:46:00.003-04:00</published><updated>2010-02-16T23:31:49.346-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran'/><title type='text'>Intel Visual FORTRAN oddity</title><content type='html'>So I come across some excellent FORTRAN77 code that I must convert to F90 and use Intel Visual FORTRAN with. Not a big deal, the code is well formed F77 and should convert to F90 in a straightforward manner.&lt;br /&gt;&lt;br /&gt;Ha ha ha, I know, what was I thinking.&lt;br /&gt;&lt;br /&gt;The conversion was easy going until mysteriously the compiler began crapping out (yes how very technical) with an abort code of 3. No error in my code, just the compiler was having internal issues. The specific error from the Intel FORTRAN 9.1 compiler was: &lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote style="font-family: courier new;"&gt;GEM_LO_GET_LOCATOR_INFO: zero locator value&lt;br /&gt;&lt;/blockquote&gt;This was truly vexing, because at the time I was in a rush to get this code ported over to IVF. Sure enough, there was an internal problem with the Intel compiler, confirmed by their support staff. A specific variable name (&lt;span style="font-family:courier new;"&gt;SNGL&lt;/span&gt;), coupled with some specific compiler flags (&lt;span style="font-family:courier new;"&gt;/iface:stdref /names:as_is&lt;/span&gt;) caused the abort.&lt;br /&gt;&lt;br /&gt;A patch is in the works, meanwhile &lt;span style="font-family:courier new;"&gt;SNGL &lt;/span&gt;becomes &lt;span style="font-family:courier new;"&gt;singleVal &lt;/span&gt;in the converted code, and &lt;span style="font-style: italic;"&gt;viola &lt;/span&gt;the problem vanishes. I'd love to see the root cause analysis on that bug!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-3414590774411508045?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/3414590774411508045/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=3414590774411508045' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/3414590774411508045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/3414590774411508045'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2007/05/intel-visual-fortran-oddity.html' title='Intel Visual FORTRAN oddity'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8723582074539021948.post-7052571893607004884</id><published>2007-05-29T17:50:00.000-04:00</published><updated>2007-06-24T11:00:55.587-04:00</updated><title type='text'>Finally got one of these for work</title><content type='html'>I now have a blog for work related things, finally. I found my company's "Social Media &amp; Blogging Guidelines," document and we're allowed to blog. We have to keep things appropriate, of course, but otherwise we are golden.&lt;br /&gt;&lt;br /&gt;So I work for &lt;strike&gt;GE Energy, Nuclear&lt;/strike&gt;GE-Hitachi Nuclear Energy Americas &lt;i&gt;(ed: name change as of 4 June 2007)&lt;/i&gt; as a software engineer. I'm the responsible engineer for codes ranging from FORTRAN 77/90, K&amp;amp;R C, C++, VB, VB.Net, Java, and C# 2.0. Mostly I work on GUI's (C# and Java) and support libraries (C, C++, FORTRAN, C#, Java), however, being a jack of many trades I also get in on the technology codes in FORTRAN.&lt;br /&gt;&lt;br /&gt;Our systems range from Windows 2000 and XP on the desktop, Windows 2000 and 2003 on the servers, OpenVMS 7.X and 8.X servers, and a few scattered Linux/HP-UX/Tru64 boxen. We're trying to consolidate all of these systems, but personally I would rather the effort be placed on insuring interoperability across all of them (while least common denominator programming is at times frustrating, it keeps your code simple and most of the time easier to debug).&lt;br /&gt;&lt;br /&gt;I spend a lot of time ensuring that our software remains well integrated, mainly utilizing API's which were set in stone before I was born. I get called upon to debug the crazy situations which happen when you bring together such an unholy trinity as FORTRAN, C, and C#. Yet the work is challenging and fun; my biggest grief being hard to find bugs and managing to break things which should not break. Ok, I lied, my biggest grief is procedures, but I think any engineer will tell you that.&lt;br /&gt;&lt;br /&gt;I will be posting lots of technical issues that I come across and how I made it around them (or why I cannot seem to get around them). We'll see how this goes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8723582074539021948-7052571893607004884?l=sixlettervariable.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sixlettervariable.blogspot.com/feeds/7052571893607004884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8723582074539021948&amp;postID=7052571893607004884' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/7052571893607004884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8723582074539021948/posts/default/7052571893607004884'/><link rel='alternate' type='text/html' href='http://sixlettervariable.blogspot.com/2007/05/finally-got-one-of-these-for-work.html' title='Finally got one of these for work'/><author><name>Christopher</name><uri>http://www.blogger.com/profile/11415988855392944633</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/_XnHVrPnrx7o/TK59jswDcEI/AAAAAAAABs4/CBzXLPsODZM/S220/bloggerthumb.jpg'/></author><thr:total>0</thr:total></entry></feed>
