<?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-5625478444715094438</id><updated>2012-02-16T17:14:24.104-08:00</updated><category term='Python'/><category term='Aptana'/><category term='Web Search'/><category term='Visual Studio'/><category term='Windows Vista'/><category term='Etymology'/><category term='Computers'/><category term='Internet'/><category term='Kubuntu'/><category term='Ruby'/><category term='Society'/><category term='RailsConf'/><category term='Software Development'/><category term='Rails'/><category term='WordPress'/><category term='Pylons'/><category term='jEdit'/><category term='Writing'/><category term='Movies'/><category term='Web 2.0'/><category term='Google'/><category term='DOS'/><category term='Web Hosting'/><category term='Web Frameworks'/><title type='text'>phipster</title><subtitle type='html'>Things I'd forget if I didn't post them here.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.phipster.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default'/><link rel='alternate' type='text/html' href='http://www.phipster.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default?start-index=26&amp;max-results=25'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>85</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-5106501662313646978</id><published>2012-02-15T16:43:00.000-08:00</published><updated>2012-02-15T16:43:47.722-08:00</updated><title type='text'>A Fundamental Law of the Universe</title><content type='html'>&lt;b&gt;&lt;span style="background-color: white; font-family: arial, sans-serif;"&gt;...the primary rule of IT support: whoever touched it last&amp;nbsp;&lt;/span&gt;&lt;span style="background-color: white; font-family: arial, sans-serif;" title="click me!"&gt;owns it.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;b&gt;&lt;span style="background-color: white; font-family: arial, sans-serif; font-size: 12px;" title="click me!"&gt;-&amp;nbsp;&lt;a href="http://thedailywtf.com/Articles/Ive-Got-Your-Number.aspx"&gt;Remy Porter for WTF!&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-5106501662313646978?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/5106501662313646978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2012/02/fundamental-law-of-universe.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/5106501662313646978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/5106501662313646978'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2012/02/fundamental-law-of-universe.html' title='A Fundamental Law of the Universe'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-3934625221071697253</id><published>2012-01-11T15:01:00.000-08:00</published><updated>2012-01-18T15:20:48.870-08:00</updated><title type='text'>How to write regexs matches that span multiple lines in Visual Studio search</title><content type='html'>Visual Studio has its own weird syntax for searching with regular expressions. Here's how to make a match across multiple lines. Given the sample XSL blocks below&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;xsl:apply-templates select="Alph"&lt;br /&gt;mode="frobit"/&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;xsl:apply-templates select="Bob"&amp;nbsp;mode="zap"/&amp;gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;xsl:apply-templates select="Cam"&amp;nbsp;&lt;/span&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;mode="frobit"/&amp;gt;&lt;/span&gt;&amp;nbsp;&lt;/blockquote&gt;&lt;blockquote class="tr_bq"&gt;&lt;/blockquote&gt;I want to match the two statements with the &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;mode="frobit"&lt;/span&gt;, even though the first one has a carriage return in the middle. In VS, you'd use this regex statement to match just the first and last lines, skipping Bob with &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;mode="zap"&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;select.*\n@.*mode="frobit"&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;The first bit,&amp;nbsp;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;select.*\n,&lt;/span&gt;&amp;nbsp; is standard Perlish for "match from the word &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;select&lt;/span&gt; to the end of line character, &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;\n&lt;/span&gt;."&lt;br /&gt;&lt;br /&gt;The at sign @ is VS's way of asking "please can you find zero or more carriage returns, but only as few as needed." The alternative is the "greedy" match, using an asterisk *, which says "find as many lines as you can ending in carriage returns before you hit &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;mode="frobit"&lt;/span&gt;, so the match in this case would make one giant match, including all of the text from &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;select="Alph"&amp;nbsp;&lt;/span&gt;all the way to the last &lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;"frobit"&lt;/span&gt;&amp;nbsp;on Cam, capturing poor Bob in the middle along the way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-3934625221071697253?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/3934625221071697253/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2012/01/how-to-write-regexs-matches-that-span.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/3934625221071697253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/3934625221071697253'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2012/01/how-to-write-regexs-matches-that-span.html' title='How to write regexs matches that span multiple lines in Visual Studio search'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-5988289292911713860</id><published>2012-01-06T19:48:00.000-08:00</published><updated>2012-01-06T19:48:53.938-08:00</updated><title type='text'>How to clean up Windows Media Player</title><content type='html'>If you've relocated or removed a media directory but its contents are still showing up in WMP's libraries list, try deleting the contents of&amp;nbsp;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;C:\Users\[username]\AppData\Local\Microsoft\Media Player.&lt;/span&gt;&lt;span style="font-family: inherit;"&gt; That&amp;nbsp;should clear out phantoms!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-5988289292911713860?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/5988289292911713860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2012/01/how-to-clean-up-windows-media-player.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/5988289292911713860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/5988289292911713860'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2012/01/how-to-clean-up-windows-media-player.html' title='How to clean up Windows Media Player'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-9140594222778812914</id><published>2012-01-03T15:51:00.000-08:00</published><updated>2012-01-03T15:51:56.574-08:00</updated><title type='text'>How to restore TortoiseSVN icons in Windows Explorer</title><content type='html'>&lt;span style="background-color: white; font-family: 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; text-align: left;"&gt;From the &lt;a href="http://tortoisesvn.tigris.org/faq.html"&gt;TortoiseSVN FAQ&lt;/a&gt;:&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="background-color: white; font-family: 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px; text-align: left;"&gt;With TortoiseSVN 1.3.0 and later, you can also rebuild the icon cache by calling TortoiseProc from the command line like this&amp;nbsp;&lt;/span&gt;&lt;code style="background-color: white; font-family: 'Andale Mono', Courier, monospace; font-size: small; line-height: 16px; text-align: left;"&gt;TortoiseProc.exe /command:rebuildiconcache&lt;/code&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-9140594222778812914?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/9140594222778812914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2012/01/how-to-restore-tortoisesvn-icons-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/9140594222778812914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/9140594222778812914'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2012/01/how-to-restore-tortoisesvn-icons-in.html' title='How to restore TortoiseSVN icons in Windows Explorer'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-37489927453246428</id><published>2011-12-01T12:56:00.001-08:00</published><updated>2011-12-01T13:22:07.885-08:00</updated><title type='text'>Open Windows Explorer from the command line with a Folder tree</title><content type='html'>Did you ever have one of those "GARGHH!" moments when someone shows you how to do something sorta obvious but not really? Like opening Windows Explorer from the command line the way you want it to look?&amp;nbsp;For example, I changed the default action for files of type "Folder" from "open" to "explore". That way, when I double-click a folder shortcut or "My Computer", the sidebar in the Explorer view shows the list of folders instead of the list of tasks, other places, etc.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;The commands &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;C:\&amp;gt;start foo&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&amp;nbsp;or&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;C:\&amp;gt;explorer /e, foo&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&amp;nbsp;(notice the switch and comma!)&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;opens Windows Explorer view the way I like it:&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-j8cImcHyu4E/TtfrGo1DQdI/AAAAAAAAGH4/B97YC2e3oSM/s1600/windows_xp_explorer_folders.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="254" src="http://3.bp.blogspot.com/-j8cImcHyu4E/TtfrGo1DQdI/AAAAAAAAGH4/B97YC2e3oSM/s320/windows_xp_explorer_folders.PNG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Typing&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;C:\&amp;gt;explorer foo&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;produces a standard or default view:&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-p1cP_wTdCGk/Ttfq69hWc7I/AAAAAAAAGHw/jkK_8O-8ySE/s1600/windows_xp_explorer_default.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="254" src="http://2.bp.blogspot.com/-p1cP_wTdCGk/Ttfq69hWc7I/AAAAAAAAGHw/jkK_8O-8ySE/s320/windows_xp_explorer_default.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;This respect for the user's preferences seems to extend to things like the tool bars and status bar and type of view, e.g. tiles or details.&amp;nbsp;&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;C:\&amp;gt;explorer foo&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;&amp;nbsp;seems to ignore all of your preferences.&lt;/span&gt;&lt;/div&gt;Thanks to the mighty folks at&amp;nbsp;&lt;a href="http://www.howtogeek.com/howto/windows-vista/stupid-geek-tricks-open-an-explorer-window-from-the-command-prompts-current-directory/"&gt;How-To Geek&lt;/a&gt;&amp;nbsp;for the awesome insights.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-37489927453246428?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/37489927453246428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2011/12/open-windows-explorer-from-command-line.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/37489927453246428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/37489927453246428'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2011/12/open-windows-explorer-from-command-line.html' title='Open Windows Explorer from the command line with a Folder tree'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-j8cImcHyu4E/TtfrGo1DQdI/AAAAAAAAGH4/B97YC2e3oSM/s72-c/windows_xp_explorer_folders.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-4254719833406471732</id><published>2011-11-19T20:32:00.000-08:00</published><updated>2011-11-19T20:32:23.037-08:00</updated><title type='text'>Good advice</title><content type='html'>&lt;a href="http://blog.alexobenauer.com/stop-writing-good-code-start-writing-good-sof"&gt;Focus on the product, not on your code&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-4254719833406471732?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/4254719833406471732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2011/11/good-advice.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/4254719833406471732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/4254719833406471732'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2011/11/good-advice.html' title='Good advice'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-920163214213612412</id><published>2011-08-17T08:24:00.000-07:00</published><updated>2011-08-17T08:24:03.026-07:00</updated><title type='text'>The Anti-Car Movement</title><content type='html'>&lt;br /&gt;Erik Curren &lt;a href="http://transitionvoice.com/2011/08/the-most-dangerous-machine-ever-built/"&gt;writes&lt;/a&gt; in his review of &lt;a href="http://www.amazon.com/gp/product/1552663841/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&amp;amp;tag=transitionvoice-20&amp;amp;linkCode=as2&amp;amp;camp=1789&amp;amp;creative=9325&amp;amp;creativeASIN=1552663841"&gt;Stop Signs: Cars and Capitalism on the Road to Economic, Social and Ecological Decay&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;For my money, to get people to demand change on such a large scale, they’re going to need a pretty strong motivation. As any salesman can tell you, &lt;b&gt;fear of loss is a much stronger motivator than hope of gain&lt;/b&gt;. And considering what’s at stake at this point — the survival of human civilization — a healthy sense of fear and urgency is also a more realistic reaction than warm-fuzzies about a higher quality of life.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-920163214213612412?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/920163214213612412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2011/08/anti-car-movement.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/920163214213612412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/920163214213612412'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2011/08/anti-car-movement.html' title='The Anti-Car Movement'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-32742155650609852</id><published>2011-07-30T13:04:00.000-07:00</published><updated>2011-07-30T13:04:43.931-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Writing'/><title type='text'>Foolish things done in a moment of weakness</title><content type='html'>Signed up for &lt;a href="http://campnanowrimo.org/campers/phipster"&gt;Camp NaNoWriMo&lt;/a&gt;. Wish me luck.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-32742155650609852?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/32742155650609852/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2011/07/foolish-things-are-done-in-moment-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/32742155650609852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/32742155650609852'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2011/07/foolish-things-are-done-in-moment-of.html' title='Foolish things done in a moment of weakness'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-8119064202185401679</id><published>2011-04-25T07:59:00.000-07:00</published><updated>2011-04-25T08:02:33.166-07:00</updated><title type='text'>Failure</title><content type='html'>&lt;blockquote&gt;The best way to &lt;b&gt;avoid Failure&lt;/b&gt; is to &lt;i&gt;fail constantly&lt;/i&gt;.&lt;/blockquote&gt;&lt;a href="http://www.codinghorror.com/blog/2011/04/working-with-the-chaos-monkey.html"&gt;Jeff &amp;quot;Chaos Monkey&amp;quot; Atwood&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-8119064202185401679?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/8119064202185401679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2011/04/failure.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/8119064202185401679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/8119064202185401679'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2011/04/failure.html' title='Failure'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-5781246260940720598</id><published>2011-02-09T10:32:00.000-08:00</published><updated>2011-02-09T10:34:06.601-08:00</updated><title type='text'>Gas Station Philosophy</title><content type='html'>My office-mate's father once saw these instructions inscribed on a humble tire pressure&amp;nbsp;gauge, and I thought it just had to be shared with the world:&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Too little pressure causes poor performance, too much pressure causes blowouts.&lt;/b&gt;&lt;/blockquote&gt;Remember that as you motor on down the Highway of Life.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-5781246260940720598?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/5781246260940720598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2011/02/gas-station-philosophy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/5781246260940720598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/5781246260940720598'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2011/02/gas-station-philosophy.html' title='Gas Station Philosophy'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-7803519085908114440</id><published>2010-12-02T17:16:00.000-08:00</published><updated>2010-12-02T17:16:31.510-08:00</updated><title type='text'>Smalltalk Lives</title><content type='html'>Somewhere in the heart of &lt;a href="http://www-01.ibm.com/software/awdtools/reqpro/"&gt;Reqpro&lt;/a&gt;, Smalltalk lives on. Got this notice when I quit:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_KF0-4vGoskY/TPhElzOST-I/AAAAAAAAF-w/_4KX0PSlpmM/s1600/smalltalk_lives.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_KF0-4vGoskY/TPhElzOST-I/AAAAAAAAF-w/_4KX0PSlpmM/s1600/smalltalk_lives.PNG" /&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/5625478444715094438-7803519085908114440?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/7803519085908114440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2010/12/smalltalk-lives.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/7803519085908114440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/7803519085908114440'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2010/12/smalltalk-lives.html' title='Smalltalk Lives'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_KF0-4vGoskY/TPhElzOST-I/AAAAAAAAF-w/_4KX0PSlpmM/s72-c/smalltalk_lives.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-4010641189358357630</id><published>2010-10-28T14:47:00.000-07:00</published><updated>2010-10-28T14:47:16.427-07:00</updated><title type='text'>Quote of the day</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;em&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;functionality is an asset, but code is a liability&lt;/span&gt;&lt;/b&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'trebuchet ms';"&gt;&lt;em&gt;- Ted Dziuba on &lt;a href="http://teddziuba.com/2010/10/taco-bell-programming.html"&gt;Taco Bell Programming&lt;/a&gt;&lt;/em&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-4010641189358357630?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/4010641189358357630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2010/10/quote-of-day.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/4010641189358357630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/4010641189358357630'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2010/10/quote-of-day.html' title='Quote of the day'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-3638749078836519325</id><published>2010-09-17T11:56:00.000-07:00</published><updated>2010-09-17T11:56:35.477-07:00</updated><title type='text'>Keyboards</title><content type='html'>I don't understand why most generic PC keyboards, you know the kind that plug into a USB port on your PC, lack &lt;a href="http://www-307.ibm.com/pc/support/site.wss/document.do?lndocid=MIGR-54780"&gt;on-board USB ports&lt;/a&gt; themselves. It would be so convenient for things like &lt;a href="http://www.thinkgeek.com/computing/usb-gadgets/5a84/"&gt;keyboard lights&lt;/a&gt;. Back in the day, my &lt;a href="http://en.wikipedia.org/wiki/Macintosh_II"&gt;Mac&lt;/a&gt; keyboard had &lt;a href="http://en.wikipedia.org/wiki/Apple_Desktop_Bus"&gt;Apple Desktop Bus&lt;/a&gt; ports, so I could plug the mouse directly into the keyboard.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-3638749078836519325?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/3638749078836519325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2010/09/keyboards.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/3638749078836519325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/3638749078836519325'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2010/09/keyboards.html' title='Keyboards'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-2109550150886019674</id><published>2010-09-13T10:22:00.000-07:00</published><updated>2010-09-13T10:22:51.665-07:00</updated><title type='text'>Compute length of a string in a batch file</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;set myvar="some string"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;rem compute the length of a string&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;set #=%myvar%&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;set length=0&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;:loop&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;if defined # (&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;rem shorten string by one character&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;set #=%#:~1%&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;rem increment the string count variable %length%&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;set /A length += 1&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;rem repeat until string is null&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;goto loop&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;echo myvar is %length% characters long!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Thanks to poster&amp;nbsp;&lt;a href="http://www.computing.net/answers/dos/length-of-a-string-in-a-batch-file/13650.html"&gt;Secret_Doom&lt;/a&gt;&amp;nbsp;on computing.net&lt;/div&gt;&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/5625478444715094438-2109550150886019674?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/2109550150886019674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2010/09/compute-length-of-string-in-batch-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/2109550150886019674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/2109550150886019674'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2010/09/compute-length-of-string-in-batch-file.html' title='Compute length of a string in a batch file'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-7341508184055508058</id><published>2010-09-07T13:28:00.000-07:00</published><updated>2010-09-07T13:45:00.851-07:00</updated><title type='text'>How to fix "weird" characters in XML</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;I had been aggravated by an extraneous a-circumflex character (Â, Windows keymap Alt-0194, Unicode '\u, HTML character entity &amp;amp;Acirc;) preceding all the degree symbols in XML output from C++ code using MSXML. For historical reasons, the degree symbol is defined in code as a literal &lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;const std::string = "°"&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;, which is later added to an XML Document tree, then output using fout() function.&lt;/span&gt;&lt;br /&gt;Here's an abridged sample:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;&amp;lt;Data&amp;gt;&lt;br /&gt;&amp;lt;Temperature&amp;gt;Â°&amp;lt;Temperature/&amp;gt;&lt;br /&gt;&amp;lt;/Data&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;[explain ISO-8859-1]. It appears that MSXML stores the character in the XML document as a two byte encoding. UTF-8 uses &lt;a href="http://en.wikipedia.org/wiki/Variable-width_encoding"&gt;variable-width encoding&lt;/a&gt;, which means the ASCII character codes between 0 and 127 map directly to their hex values in UTF-8, e.g. the capital letter X, is 0x58 in both ASCII and UTF-8.&lt;br /&gt;&lt;br /&gt;The hex value, C2B0 (1100 0100 1011 0000), represents a "lead unit". After some Googling, I found &lt;a href="http://bytes.com/topic/php/answers/452523-latin-capital-circumflex-preceding-pound-symbol#post1730113"&gt;a very clear explanation from Andy Hassall&lt;/a&gt;&amp;nbsp;to a similar problem:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: verdana, Arial, sans-serif; font-size: 12px; line-height: 22px;"&gt;But your PHP code may be trying to treat UTF-8 as single-byte ISO-8859-1.&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: verdana, Arial, sans-serif; font-size: 12px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: verdana, Arial, sans-serif; font-size: 12px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: verdana, Arial, sans-serif; font-size: 12px; line-height: 22px;"&gt;&lt;b&gt;A British pound symbol is two bytes in UTF-8 - it's U+00A3 which is 0xC2 0xA3&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: verdana, Arial, sans-serif; font-size: 12px; line-height: 22px;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: verdana, Arial, sans-serif; font-size: 12px; line-height: 22px;"&gt;&lt;b&gt;in UTF-8.&lt;/b&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: verdana, Arial, sans-serif; font-size: 12px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: verdana, Arial, sans-serif; font-size: 12px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: verdana, Arial, sans-serif; font-size: 12px; line-height: 22px;"&gt;&lt;a href="http://www.fileformat.info/info/unicode/char/00A3/index.htm" rel="nofollow" style="color: #2a5db0;" target="_blank"&gt;http://www.fileformat.info/info/unic...00A3/index.htm&lt;/a&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: verdana, Arial, sans-serif; font-size: 12px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: verdana, Arial, sans-serif; font-size: 12px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: verdana, Arial, sans-serif; font-size: 12px; line-height: 22px;"&gt;If you tried to display this as ISO-8859-1 you'd get:&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: verdana, Arial, sans-serif; font-size: 12px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: verdana, Arial, sans-serif; font-size: 12px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: verdana, Arial, sans-serif; font-size: 12px; line-height: 22px;"&gt;0xC2 = Latin capital A with circumflex&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: verdana, Arial, sans-serif; font-size: 12px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: verdana, Arial, sans-serif; font-size: 12px; line-height: 22px;"&gt;0xA3 = British pound symbol&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: verdana, Arial, sans-serif; font-size: 12px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: verdana, Arial, sans-serif; font-size: 12px; line-height: 22px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 1px; -webkit-border-vertical-spacing: 1px; font-family: verdana, Arial, sans-serif; font-size: 12px; line-height: 22px;"&gt;&lt;a href="http://en.wikipedia.org/wiki/ISO_8859-1" rel="nofollow" style="color: #2a5db0;" target="_blank"&gt;http://en.wikipedia.org/wiki/ISO_8859-1&lt;/a&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;a href="http://www.dpawson.co.uk/xsl/sect2/N7150.html#d9562e1221"&gt;Mike Brown explains it this way&lt;/a&gt;:&lt;br /&gt;&lt;blockquote&gt;&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: serif;"&gt;Take, for example, the non-breaking space character, which in HTML we often write as "&amp;amp;nbsp;", a predefined (in HTML, not XML) entity reference defined as equivalent to "&amp;amp;#160;", which in turn is interpreted as the single non-breaking-space character. Different encoding schemes will represent this character as different bit sequences.&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-family: 'Times New Roman';"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: serif;"&gt;For example, in the "iso-8859-1" encoding, the non-breaking space character maps to the bit sequence 10100000, an 8-bit byte representing a value that we can also easily express as decimal 160 or hex A0. But in "utf-8", the non-breaking space maps to the bit sequence 11000010 10100000. If we interpret this as a pair of 8-bit bytes, we could say they represent the values hex C2 followed by A0 (192 and 160).&lt;span class="Apple-style-span" style="-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; font-family: 'Times New Roman';"&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: serif;"&gt;Now imagine you are the web browser, receiving an HTTP message containing an HTML document. All you see in the message is a stream of bits. How do you know what 11000010 10100000 means?&lt;/div&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: serif;"&gt;If you think the document is encoded using utf-8, you'll correctly interpret this sequence as one single NO-BREAK SPACE character (that's its Unicode name).&lt;/div&gt;&lt;div style="-webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px; font-family: serif;"&gt;If you think the document is encoded using iso-8859-1, you will incorrectly interpret it as *two* characters: (0xC2) LATIN CAPITAL LETTER A WITH CIRCUMFLEX followed by (0xA0) NO-BREAK SPACE.&lt;/div&gt;&lt;/blockquote&gt;&lt;br /&gt;This was pretty much the same thing I was seeing.&amp;nbsp;The XML processing instruction does not specify an encoding, so it defaults to ISO-8859-1. When MSXML renders the two byte degree character to single-byte ISO-8859-1, the first byte is saved as the Unicode lead unit 0xC2, followed by the single byte for the degree symbol, 0xB0. When the XML file is opened with a text editor (jEdit), the first byte is displayed as the a-circumflex, which happens to be 0xC2 in ISO-8859-1.&lt;br /&gt;&lt;br /&gt;I fixed the problem by specifying the encoding in the XML processing instruction for MSXML:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;br /&gt;&amp;lt;Data&amp;gt;&lt;br /&gt;&amp;lt;Temperature&amp;gt;°&amp;lt;Temperature/&amp;gt;&lt;br /&gt;&amp;lt;/Data&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;It works equally well if the encoding is specified as ISO-8895-1. Now the XML declaration includes an explicit processing instruction for the encoding scheme, and MSXML renders the degree character as a single byte, 0xB0.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-7341508184055508058?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/7341508184055508058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2010/09/how-to-fix-weird-characters-in-xml.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/7341508184055508058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/7341508184055508058'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2010/09/how-to-fix-weird-characters-in-xml.html' title='How to fix &quot;weird&quot; characters in XML'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-2685786683326339112</id><published>2010-04-07T09:46:00.000-07:00</published><updated>2010-04-07T09:51:22.866-07:00</updated><title type='text'>one-liner: mount the current directory to a temporary top-level drive letter</title><content type='html'>Suppose you're doing command line stuff in some ridiculously deep folder, e.g. &lt;code&gt;C:\some path\to some\ridiculously deep\folder\way down\below a reasonable\level&amp;gt;&lt;/code&gt;, so the default command prompt pushes way over to the right edge of the screen, and any output containing the wraps 3 times in the window, and it's just really hard to read:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_KF0-4vGoskY/S7y30lRDqkI/AAAAAAAAFA0/ZVYObCQiJE0/s1600/subst.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="507" src="http://4.bp.blogspot.com/_KF0-4vGoskY/S7y30lRDqkI/AAAAAAAAFA0/ZVYObCQiJE0/s640/subst.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;The following one-liner will "substitute" a temporary drive &lt;code&gt;x:&lt;/code&gt; for the current path, effectively mounting &lt;code&gt;C:\some path\to some\ridiculously deep\folder\way down\below a reasonable\level&amp;gt;&lt;/code&gt; as &lt;code&gt;x:\&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;for /f "tokens=*" %i in ('cd') do @subst x: "%i"&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Delete the temporary drive with the command &lt;code&gt;subst /d x:&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-2685786683326339112?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/2685786683326339112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2010/04/one-liner-mount-current-directory-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/2685786683326339112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/2685786683326339112'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2010/04/one-liner-mount-current-directory-to.html' title='one-liner: mount the current directory to a temporary top-level drive letter'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_KF0-4vGoskY/S7y30lRDqkI/AAAAAAAAFA0/ZVYObCQiJE0/s72-c/subst.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-8008584412322457072</id><published>2010-04-06T13:56:00.000-07:00</published><updated>2010-04-06T14:50:00.127-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DOS'/><title type='text'>Substituting characters inline</title><content type='html'>Use the following technique to make character substitutions on the fly from DOS command results.&lt;br /&gt;&lt;br /&gt;Given a file listing with underscores in the file names, e.g.&lt;br /&gt;&lt;pre&gt;foo_first.txt&lt;br /&gt;foo_second.txt&lt;br /&gt;foo_third.txt&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This is ugly, but it works. Start a new command shell with delayed variable expansion option &lt;code&gt;cmd /v&lt;/code&gt;, then run the following one-liner, e.g. to replace the underscores with spaces:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;C:\&amp;gt;for /f %i in ('dir /b') do @set x=%i &amp; echo !x:_= !&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The result will be:&lt;br /&gt;&lt;pre&gt;foo first.txt&lt;br /&gt;foo second.txt&lt;br /&gt;foo third.txt&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The first trick, delayed variable expansion, is enabled by starting a new command shell with the /v option. This lets you set and change a variable's value at runtime by surrounding the variable with bangs ! instead of percents %. Normally, the default no immediate variable expansion would not update the x variable each time &lt;code&gt;dir /b&lt;/code&gt; returns a line. Only the last value set to x is echoed each time:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;foo third.txt&lt;br /&gt;foo third.txt&lt;br /&gt;foo third.txt&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The second trick, character substitution, is set by &lt;code&gt;!x:_= !&lt;/code&gt;. &lt;br /&gt;&lt;br /&gt;You can substitute other characters, e.g. &lt;code&gt;!x:abc=def!&lt;/code&gt; would turn abcxyz.txt into defxyz.txt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-8008584412322457072?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/8008584412322457072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2010/04/substituting-characters-inline.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/8008584412322457072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/8008584412322457072'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2010/04/substituting-characters-inline.html' title='Substituting characters inline'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-2193134509149945794</id><published>2010-03-17T16:23:00.000-07:00</published><updated>2010-04-15T15:31:53.845-07:00</updated><title type='text'>The Metric Law of 90s</title><content type='html'>&lt;span class="Apple-style-span" style="color: #333333; font-family: Verdana, Arial, Helvetica; font-size: 12px;"&gt;Thanks to &lt;a href="http://www.baselinemag.com/c/a/IT-Management/Lies-Damned-Lies-and-Project-Metrics-Part-1/1/"&gt;Bruce F. Webster&lt;/a&gt;, who reminded me of this hoary old saying:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;The first 90 percent of a development project takes 90 percent of the schedule. &lt;br /&gt;&lt;br /&gt;The remaining 10 percent of the project takes the other 90 percent of the schedule.&lt;/blockquote&gt;&lt;br /&gt;Note (15 April 2010) - discovered this is also known as &lt;a href="http://en.wikipedia.org/wiki/Ninety-ninety_rule"&gt;the Ninety-ninety Rule&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-2193134509149945794?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/2193134509149945794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2010/03/metric-law-of-90s.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/2193134509149945794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/2193134509149945794'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2010/03/metric-law-of-90s.html' title='The Metric Law of 90s'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-5647783226367804336</id><published>2010-03-11T22:19:00.000-08:00</published><updated>2010-03-11T22:23:40.793-08:00</updated><title type='text'>Experience</title><content type='html'>This notion puzzled me for some time: &lt;b&gt;Have you got X years' experience&amp;nbsp;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;[cooking, programming computers, running a business]&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;, or one year, repeated X times?&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Simply, have you grown? Are you doing something new this year, something you couldn't have comprehended X years ago? Did you acquire a new skill, learn a new point of view, make a new friend, visit a new place?&lt;br /&gt;&lt;br /&gt;If not, you're on the hamster wheel. Time to bail out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-5647783226367804336?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/5647783226367804336/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2010/03/experience.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/5647783226367804336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/5647783226367804336'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2010/03/experience.html' title='Experience'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-6732948281158377663</id><published>2010-01-05T07:25:00.000-08:00</published><updated>2010-03-01T23:20:47.398-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>How to run SQL*Plus one liners on Windows</title><content type='html'>Suppose you have a simple one line query to run on your Oracle database. Oddly, SQL*Plus doesn't take SQL statements as a command line parameter.&lt;br/&gt;&lt;br/&gt;For a simple one liner, it's often too much work to start up sqlplus, logon, type in the SQL statement, then exit. It may also be too trivial to save the SQL statement to a file that you then call from sqlplus, e.g. &lt;code&gt;C:\&amp;gt;sqlplus user/pass @myfile.sql&lt;/code&gt;.&lt;br/&gt;&lt;br/&gt;To do it all in one line on the command prompt, &lt;strong&gt;echo&lt;/strong&gt; the statement into sqlplus:&lt;br/&gt;&lt;br/&gt;&lt;code&gt;echo select count(*) from mytable; | sqlplus user/pass&lt;/code&gt;&lt;br/&gt;&lt;br/&gt;This technique would probably also work on a Unix box, but I don't have an Oracle db installed on a Unix box to test it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-6732948281158377663?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/6732948281158377663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2010/01/how-to-run-sqlplus-one-liners-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/6732948281158377663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/6732948281158377663'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2010/01/how-to-run-sqlplus-one-liners-on.html' title='How to run SQL*Plus one liners on Windows'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-1631950645421388058</id><published>2009-12-09T07:45:00.000-08:00</published><updated>2010-03-01T23:20:47.400-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>Peak Prices?</title><content type='html'>I've had &lt;a href="http://www.amazon.ca/Oil-101-Morgan-Downey/dp/0982039204/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1260402085&amp;amp;sr=1-1"&gt;Oil 101&lt;/a&gt; in my Amazon.ca cart for a few weeks. Just not ready to read it yet. When I checked my cart today, I was unpleasantly surprised to read this note:&lt;br/&gt;&lt;br/&gt;Please note that the price of Oil 101 has increased from CDN$ 23.20 to CDN$ 36.97 since you placed it in your Shopping Cart. Items in your cart will always reflect the most recent price displayed on their product detail pages. &lt;br/&gt;&lt;br/&gt;How does Amazon justify boosting the price by almost 60% in just a couple of months? Perhaps, like the book's subject, we've reached "&lt;a href="http://www.aspousa.org/"&gt;Peak Books&lt;/a&gt;"...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-1631950645421388058?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/1631950645421388058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2009/12/peak-prices.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/1631950645421388058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/1631950645421388058'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2009/12/peak-prices.html' title='Peak Prices?'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-8029983412984791557</id><published>2009-05-05T03:44:00.000-07:00</published><updated>2010-03-01T23:20:47.401-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>gnu find and grep: using path patterns to match more than one file
extension</title><content type='html'>Example using Cygwin gnu find, xargs and grep to search for a typo in XSLT and XML files. Note that &lt;code&gt;-iregex&lt;/code&gt; matches a pattern in the whole path, and the pattern is a &lt;a href="http://en.wikipedia.org/wiki/Regular_expression#POSIX_Basic_Regular_Expressions"&gt;POSIX basic regex&lt;/a&gt;:&lt;br/&gt;&lt;br/&gt;&lt;pre lang="batch"&gt;C:\&amp;gt;find ./ -iregex '.*\.\(xslt\^|xml\)' -type f -print | xargs grep -i "staus"&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;When &lt;code&gt;find&lt;/code&gt; matches a file path, the path is piped to &lt;code&gt;xargs&lt;/code&gt;, which hands it off to &lt;code&gt;grep&lt;/code&gt; to search for the string "staus" - which I want to replace with "status" (but not here :).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-8029983412984791557?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/8029983412984791557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2009/05/gnu-find-and-grep-using-path-patterns.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/8029983412984791557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/8029983412984791557'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2009/05/gnu-find-and-grep-using-path-patterns.html' title='gnu find and grep: using path patterns to match more than one file&#xA;extension'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-9062967265034272666</id><published>2009-05-04T04:42:00.000-07:00</published><updated>2010-03-01T23:20:47.402-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><category scheme='http://www.blogger.com/atom/ns#' term='Society'/><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='WordPress'/><title type='text'>Cygwin setup.exe fails during upgrade</title><content type='html'>Like &lt;a href="http://rubenlaguna.com/wp/2007/11/05/cygwin-setupexe-crashes-when-upgrading-packages/"&gt;Ruben&lt;/a&gt;, who provided the clues, I discovered that a corrupt/incompatible alternatives.lst.bz file in the C:\cygwin\etc\setup directory caused Cywin setup.exe to fail. &lt;br/&gt;&lt;br/&gt;A few clues pointed to this file as the culprit:&lt;br/&gt;&lt;br/&gt;&lt;ol&gt;&lt;br/&gt;&lt;li&gt;First time through, the installer complained that some other Cygwin process had locked the readme file&lt;/li&gt;&lt;br/&gt;&lt;li&gt;the installer just looped indefinitely on extracting the README file from alternatives.lst.bz until I killed it&lt;/li&gt;&lt;br/&gt;&lt;li&gt;The only .bz file in C:\cygwin\etc\setup with today's date was alternatives.lst.bz.&lt;/li&gt;&lt;br/&gt;&lt;/ol&gt;&lt;br/&gt;&lt;br/&gt;Here's what the log file recorded, for several thousand lines:&lt;br/&gt;&lt;br/&gt;&lt;pre&gt;&lt;br/&gt;2009/05/04 11:01:23 io_stream_cygfile: &lt;br/&gt;fopen(/etc/alternatives/README) failed 13 Permission denied&lt;br/&gt;2009/05/04 11:01:23 Failed to open &lt;br/&gt;cygfile:///etc/alternatives/README for writing.&lt;br/&gt;&lt;/pre&gt;&lt;br/&gt;&lt;br/&gt;I renamed the file to &lt;strong&gt;alternatives.lst.bz.bak&lt;/strong&gt; , then reran setup.exe to successfully upgrade Cygwin.&lt;br/&gt;&lt;br/&gt;Now I suppose I should log a bug report...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-9062967265034272666?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/9062967265034272666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2009/05/cygwin-setupexe-fails-during-upgrade.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/9062967265034272666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/9062967265034272666'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2009/05/cygwin-setupexe-fails-during-upgrade.html' title='Cygwin setup.exe fails during upgrade'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-1989245039573430933</id><published>2009-05-04T03:09:00.000-07:00</published><updated>2010-03-01T23:20:47.408-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>How to fix apropos for Cygwin</title><content type='html'>If the &lt;strong&gt;apropos&lt;/strong&gt; command in Cygwin doesn't find anything expected, run &lt;code&gt;/usr/sbin/makewhatis&lt;/code&gt; from your Cygwin bash prompt to rebuild the &lt;a href="http://en.wikipedia.org/wiki/Whatis"&gt;whatis&lt;/a&gt; database.&lt;br/&gt;&lt;br/&gt;Thanks to &lt;a href="http://www.cygwin.com/ml/cygwin/2003-03/msg01499.html"&gt;Mike and Igor&lt;/a&gt; for their tips.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-1989245039573430933?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/1989245039573430933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2009/05/how-to-fix-apropos-for-cygwin.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/1989245039573430933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/1989245039573430933'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2009/05/how-to-fix-apropos-for-cygwin.html' title='How to fix apropos for Cygwin'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5625478444715094438.post-4807409960122032150</id><published>2009-05-01T05:35:00.000-07:00</published><updated>2010-03-01T23:46:41.761-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computers'/><title type='text'>How to make Windows %path% readable</title><content type='html'>If like me your Windows &lt;code&gt;%path%&lt;/code&gt; looks something like this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;PATH=c:rubybin;C:Perlsitebin;C:Perlbin;C:Oracle&lt;br /&gt;OraHome817bin;C:oracleproduct10.2.0gpdbin;C:Program &lt;br /&gt;FilesOraclejre1.1.7bin;C:Python26;C:Python26scripts;C:&lt;br /&gt;Python26Libidlelib;C:cygwinbin;C:Program FilesWindows &lt;br /&gt;Resource KitsTools;C:WINDOWSsystem32;C:WINDOWS;C:WINDOWS&lt;br /&gt;Downloaded ProgramFiles;C:Program FilesIBMDirectorbin;C:&lt;br /&gt;Program FilesDiskeeper CorporationDiskeeper;c:Program &lt;br /&gt;FilesMicrosoft SQL Server90Toolsbinn;C:Program Files&lt;br /&gt;Rationalcommon;c:scripts;C:Program FilesjEdit;C:Program &lt;br /&gt;FilesQuickTimeQTSystem;C:Program FilesTortoiseSVNbin;C:&lt;br /&gt;ipdsdevaxis2axis2c-rel-1.3.0lib;C:Program FilesJava&lt;br /&gt;jdk1.5.0_16bin;C:jruby-1.2.0bin&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Then save this to "road.bat" somewhere on your path:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;@echo off&lt;br /&gt;rem source: http://www.perlmonks.org/?node_id=757655&lt;br /&gt;for %%i in ("%path:;=" "%") do @echo %%i&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;When you run &lt;code&gt;C:\&amp;gt;road&lt;/code&gt; all those paths are nicely split and one-lined:&lt;br /&gt;&lt;pre&gt;C:&amp;gt;road&lt;br /&gt;"c:rubybin"&lt;br /&gt;"C:Perlsitebin"&lt;br /&gt;"C:Perlbin"&lt;br /&gt;"C:OracleOraHome817bin"&lt;br /&gt;"C:oracleproduct10.2.0gpdbin"&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;and you can do cool things like &lt;code&gt;C:\&amp;gt;road | find /i "Perl"&lt;/code&gt; to find out where Perl is hiding.&lt;br /&gt;&lt;br /&gt;To paraphrase the (brilliant) author &lt;a href="http://www.perlmonks.org/?node_id=749850"&gt;VinsWorldcom&lt;/a&gt;, this one-liner &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;wraps the %PATH% ENV var in double quotes and then replaces all the semicolon separators with a double-quote, space, double quote. This effectively puts double quotes around all the paths (so spaces won't give any troubles) then use the for loop to list each newly double-quoted string.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5625478444715094438-4807409960122032150?l=www.phipster.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.phipster.com/feeds/4807409960122032150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.phipster.com/2009/05/how-to-make-windows-path-readable.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/4807409960122032150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5625478444715094438/posts/default/4807409960122032150'/><link rel='alternate' type='text/html' href='http://www.phipster.com/2009/05/how-to-make-windows-path-readable.html' title='How to make Windows %path% readable'/><author><name>Philip Steiner</name><uri>http://www.blogger.com/profile/13271984132120153264</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://2.bp.blogspot.com/-6K-520o5lJg/TpudIVr7qBI/AAAAAAAAGFU/DPsrMRRtyss/s220/profile2.jpg'/></author><thr:total>0</thr:total></entry></feed>
