<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Looking For The Spike...</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/howardk/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/howardk/feed.xml</link>
    <description />
    <lastBuildDate>Tue, 16 Apr 2019 05:11:28 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Indirection</title>
      <link>https://docs.microsoft.com/archive/blogs/howardk/indirection</link>
      <pubDate>Sat, 01 Feb 2014 09:55:45 GMT</pubDate>
      <dc:creator><![CDATA[Howard Kapustein]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/howardk/2014/02/01/indirection/</guid>
      <description><![CDATA[From here:
"All problems in computer science can be solved by another level of indirection......]]></description>
      <content:encoded><![CDATA[<p>From <a href="https://www.stationary-traveller.eu/pages/bzr-a-retrospective.html">here</a>:</p>
<p style="padding-left: 30px;">"<span>All problems in computer science can be solved by another level of indirection... Except for the problem of too many layers of indirection.</span>"</p>]]></content:encoded>
    </item>
    <item>
      <title>I am a Systems Programmer. I stand between the developer and the flame :-)</title>
      <link>https://docs.microsoft.com/archive/blogs/howardk/i-am-a-systems-programmer-i-stand-between-the-developer-and-the-flame</link>
      <pubDate>Tue, 19 Nov 2013 13:06:02 GMT</pubDate>
      <dc:creator><![CDATA[Howard Kapustein]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/howardk/2013/11/19/i-am-a-systems-programmer-i-stand-between-the-developer-and-the-flame/</guid>
      <description><![CDATA[https://research.microsoft.com/en-us/people/mickens/thenightwatch.pdf
"As a highly trained academic...]]></description>
      <content:encoded><![CDATA[<p><a href="https://research.microsoft.com/en-us/people/mickens/thenightwatch.pdf">https://research.microsoft.com/en-us/people/mickens/thenightwatch.pdf</a></p>
<p style="padding-left: 30px;" align="LEFT">"As a highly trained academic researcher, I spend a lot of time trying to advance the frontiers of human knowledge. However, as someone who was born in the South, I secretly believe that true progress is a fantasy, and that I need to prepare for the end times, and for the chickens coming home to roost, and fast zombies, and slow zombies, and the polite zombies who say &ldquo;sir&rdquo; and &ldquo;ma&rsquo;am&rdquo; but then try to eat your brain to acquire your skills. When the revolution comes, I need to be prepared; thus, in the quiet moments, when I&rsquo;m not producing incredible scientific breakthroughs, I think about what I&rsquo;ll do when the weather forecast inevitably becomes RIVERS OF BLOOD ALL DAY EVERY DAY. The main thing that I ponder is who will be in my gang, because the likelihood of post-apocalyptic survival is directly related to the size and quality of your rag-tag group of associates. There are some obvious people who I&rsquo;ll need to recruit: a locksmith (to open doors); a demolitions expert (for when the locksmith has run out of ideas); and a person who can procure, train, and then throw snakes at my enemies (because, in a world without hope, snake throwing is a reasonable way to resolve disputes). All of these people will play a role in my ultimate success as a dystopian warlord philosopher. However, the most important person in my gang will be a systems programmer...</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>More Powershell Fun - AppX Package Dependencies</title>
      <link>https://docs.microsoft.com/archive/blogs/howardk/more-powershell-fun-appx-package-dependencies</link>
      <pubDate>Mon, 28 Oct 2013 13:00:00 GMT</pubDate>
      <dc:creator><![CDATA[Howard Kapustein]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/howardk/2013/10/28/more-powershell-fun-appx-package-dependencies/</guid>
      <description><![CDATA[After a recent inquiry and a little thought, you can find all the packages registered for the...]]></description>
      <content:encoded><![CDATA[<p>After a recent inquiry and a little thought, you can find all the packages registered for the current user with dependencies on framework packages.</p>
<p style="padding-left: 30px;"><span><code>powershell -c "ForEach ($p in $(Get-AppxPackage)) { ForEach ($n in (Get-AppxPackageManifest $p).package.dependencies.packagedependency.name) { $n + ' -- ' + $p.packagefullname } }"</code></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Ineffective Sorts</title>
      <link>https://docs.microsoft.com/archive/blogs/howardk/ineffective-sorts</link>
      <pubDate>Sun, 04 Aug 2013 21:21:00 GMT</pubDate>
      <dc:creator><![CDATA[Howard Kapustein]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/howardk/2013/08/04/ineffective-sorts/</guid>
      <description><![CDATA[From XKCD&nbsp;:-)
]]></description>
      <content:encoded><![CDATA[<p>From <a title="Ineffective Sorts" href="http://xkcd.com/1185/">XKCD</a>&nbsp;:-)</p>
<p><a href="http://imgs.xkcd.com/comics/ineffective_sorts.png"><img style="max-width: 550px;" src="http://imgs.xkcd.com/comics/ineffective_sorts.png" alt="" border="0" /></a></p>]]></content:encoded>
    </item>
    <item>
      <title>Announcing Hasher!</title>
      <link>https://docs.microsoft.com/archive/blogs/howardk/announcing-hasher</link>
      <pubDate>Tue, 04 Jun 2013 08:34:00 GMT</pubDate>
      <dc:creator><![CDATA[Howard Kapustein]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/howardk/2013/06/04/announcing-hasher/</guid>
      <description><![CDATA[Shameless plug: I iz a Windows store app developer :-)
Hasher is up on the Windows store. It's a...]]></description>
      <content:encoded><![CDATA[<p>Shameless plug: I iz a Windows store app developer :-)</p>
<p>Hasher is up on the Windows store. It's a little app I wrote in my spare time, to learn more about writing Windows store apps (I build the plumbing behind them, so it's always useful to see the other side of the fence as it were :-)</p>
<p>You can find more details <a href="http://kapustein.com/blog/?p=1937">here</a></p>
<p>Enjoy,</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Who wrote the original BSOD (and why white-on-blue)?</title>
      <link>https://docs.microsoft.com/archive/blogs/howardk/who-wrote-the-original-bsod-and-why-white-on-blue</link>
      <pubDate>Tue, 14 May 2013 11:13:22 GMT</pubDate>
      <dc:creator><![CDATA[Howard Kapustein]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/howardk/2013/05/14/who-wrote-the-original-bsod-and-why-white-on-blue/</guid>
      <description><![CDATA[An interesting bit of trivia:
John Vert, ex-Windows NT kernel guyex-Windows NT kernel...]]></description>
      <content:encoded><![CDATA[<p>An interesting <a href="http://www.quora.com/Blue-Screen-of-Death/Who-designed-the-original-Windows-Blue-Screen-of-Death#ans1640153">bit of trivia</a>:</p>
<div id="__w2_V0m61Yu_answer_user" class="answer_user" style="padding-left: 30px;"><span id="ld_8yKFY0_481"><a id="__w2_UL2TkVi_link" class="user" href="http://www.quora.com/John-Vert" target="_blank">John Vert</a><span class="rep">, </span><span id="__w2_Pk9i887_link"><span class="rep"><span id="__w2_qp2KXLh_text_snip" class="inline"><span id="__w2_qp2KXLh_text_snip_content">ex-Windows NT kernel guy</span></span><span id="__w2_qp2KXLh_full_text" class="hidden"><span id="__w2_qp2KXLh_full_text_content">ex-Windows NT kernel guy</span></span></span></span></span></div>
<div id="__w2_V0m61Yu_answer_content" class="answer_content" style="padding-left: 30px;">
<div id="ld_8yKFY0_483">&nbsp;</div>
<div id="ld_8yKFY0_478">
<div class="suggested">
<div id="__w2_lFphnEs_inline_editor_content" class="inline_editor_content hover">
<div id="__w2_xEVrF8e_outer">
<div id="__w2_xEVrF8e_container" style="padding-left: 30px;">Back in 1991 I wrote the original code for Windows NT 3.1 that put the video screen back into text mode and the routines to put text on it (and a truly gnarly bit of code it was!). I used the white on blue colors for two reasons.
<ul>
<li>The MIPS workstations we were using for the MIPS port had firmware that presented a boot option screen in white on blue, so it made sense that the bugcheck screen would match.</li>
<li>I (and many others) were using SlickEdit as our text editor and at the time its default color scheme was also white on blue.</li>
</ul>
I believe Mark Lucovsky wrote the original code that dumped a bunch of text to the screen. This was a bugcode and a stack dump, resulting in a bunch of useless hex numbers which product support would occasionally dutifully transcribe from the customers and include in the bug report. <br /><br />There was no "typesetting" as we used standard VGA text mode on PCs.<br /><br />I don't know the history of the Win3.1/Win9x blue screens, I think the fact they were the same color is just coincidence.</div>
</div>
</div>
</div>
</div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Python Cool Tricks</title>
      <link>https://docs.microsoft.com/archive/blogs/howardk/python-cool-tricks</link>
      <pubDate>Wed, 08 May 2013 09:36:00 GMT</pubDate>
      <dc:creator><![CDATA[Howard Kapustein]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/howardk/2013/05/08/python-cool-tricks/</guid>
      <description><![CDATA[Nice. Some are exotic, but list comprehensions, the empty string trick&nbsp;are commonly handy, and...]]></description>
      <content:encoded><![CDATA[<p><a href="http://www.quora.com/Python-programming-language-1/What-are-some-cool-Python-tricks#ans2454664">Nice</a>. Some are exotic, but list comprehensions, the empty string trick&nbsp;are commonly handy, and the json pretty-printing maybe less so but good to know.</p>
<p>The note about dir() and help() are great if you're not already familiar (you should be).</p>
<p>The Python enum trick is a new one by me:</p>
<div class="codeblock">
<pre style="padding-left: 30px;"><code class="js">class PlayerRanking:</code></pre>
<pre style="padding-left: 30px;"><code class="js"> Bolt, Green, Johnson, Mom = range(4)</code></pre>
<pre style="padding-left: 30px;"><code class="js"></code>&nbsp;</pre>
<pre style="padding-left: 30px;"><code class="js"></code><code class="js">PlayerRanking.Mom<br />-&gt; 4</code></pre>
</div>
<div class="codeblock">
<pre><span>As is the 'launch an interactive shell'</span></pre>
<pre class="scroll" style="padding-left: 30px;"><code class="js">import code; code.interact(local = locals())</code></pre>
<pre><span><span>That beats printf-debugging by a country mile :-)</span></span></pre>
</div>]]></content:encoded>
    </item>
    <item>
      <title>FastClick</title>
      <link>https://docs.microsoft.com/archive/blogs/howardk/fastclick</link>
      <pubDate>Sat, 20 Apr 2013 22:24:36 GMT</pubDate>
      <dc:creator><![CDATA[Howard Kapustein]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/howardk/2013/04/20/fastclick/</guid>
      <description><![CDATA[&nbsp;
FastClick is handy:
FastClick is a simple, easy-to-use library for eliminating the 300ms...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p>
<p><a href="https://github.com/ftlabs/fastclick">FastClick</a> is handy:</p>
<p style="padding-left: 30px;"><span>FastClick is a simple, easy-to-use library for eliminating the 300ms delay between a physical tap and the firing of a&nbsp;</span><code>click</code><span>&nbsp;event on mobile browsers. The aim is to make your application feel less laggy and more responsive while avoiding any interference with your current logic.</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Powershell fun - Parsing for Protocols Redux</title>
      <link>https://docs.microsoft.com/archive/blogs/howardk/powershell-fun-parsing-for-protocols-redux</link>
      <pubDate>Thu, 28 Mar 2013 22:45:26 GMT</pubDate>
      <dc:creator><![CDATA[Howard Kapustein]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/howardk/2013/03/28/powershell-fun-parsing-for-protocols-redux/</guid>
      <description><![CDATA[That problem I'd previously mentioned? Turns out I had a bad package registered for some old VS...]]></description>
      <content:encoded><![CDATA[<p>That <a href="http://blogs.msdn.com/controlpanel/blogs/posteditor.aspx/Powershell fun - Parsing for Protocols">problem I'd previously mentioned</a>? Turns out I had a bad package registered for some old VS project. Remove-AppxPackage &lt;packagefullname&gt; and voila! No more error.</p>
<p>My original command</p>
<p style="padding-left: 30px;"><span><code>powershell -c "ForEach ($p in $(Get-AppxPackage)) { ForEach ($n in (Get-AppxPackageManifest $p).package.applications.application.extensions.extension.protocol.name) { $n + ' -- ' + $p.packagefullname } }"</code></span></p>
<p>One suggested alternative in the "probably not the most elegant but workable" category was rather interesting</p>
<p style="padding-left: 30px;"><code>powershell -c "Get-AppxPackage | Get-AppxPackageManifest | ForEach { $m = $_; $m.package.applications.application.extensions.extension.protocol.name | ForEach {if ($_) {@{$_ = $m.package.identity.name}}} }"</code></p>
<p>Same net result, but with 2 differences:</p>
<ol>
<li>Output is a nice table of columns (not just a simple dump of "protocol -- pkgfullname")</li>
<li>Not as resilient to errors -- emitted an error about file not found and quit (the former had the virtue of giving output for everything it could parse, though uglier output and not really sortable)</li>
</ol>
<p>But handy enough for a quick'n'dirty hack.</p>]]></content:encoded>
    </item>
    <item>
      <title>Powershell fun - Parsing for Protocols</title>
      <link>https://docs.microsoft.com/archive/blogs/howardk/powershell-fun-parsing-for-protocols</link>
      <pubDate>Tue, 26 Mar 2013 20:50:33 GMT</pubDate>
      <dc:creator><![CDATA[Howard Kapustein]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/howardk/2013/03/26/powershell-fun-parsing-for-protocols/</guid>
      <description><![CDATA[I was looking for what protocols are registered by my installed AppX packages and figured out a...]]></description>
      <content:encoded><![CDATA[<p>I was looking for what protocols are registered by my installed AppX packages and figured out a 1-liner Powershell script to do it</p>
<p style="padding-left: 30px;"><span><code>powershell -c "foreach ($p in $(get-appxpackage)) { foreach ($n in (Get-AppxPackageManifest $p).package.applications.application.extensions.extension.protocol.name) { $n + ' -- ' + $p.packagefullname } }"</code></span></p>
<p>Hey, I never said it'd be pretty :-)</p>
<p>This dumps</p>
<pre style="padding-left: 30px;"><code>Get-AppxPackageManifest : The system cannot find the file specified. (Exception from HRESULT: 0x80070002)<br />At line:1 char:54<br />+ foreach ($p in $(get-appxpackage)) { foreach ($n in (Get-AppxPackageManifest $p) ...<br />+ ~~~~~~~~~~~~~~~~~~~~~~~~~~<br /> + CategoryInfo : NotSpecified: (:) [Get-AppxPackageManifest], FileNotFoundException<br /> + FullyQualifiedErrorId : System.IO.FileNotFoundException,Microsoft.Windows.Appx.PackageManager.Commands.GetAppxPackageManifestCommand<br /><br />bingmaps -- Microsoft.BingMaps_1.5.1.240_x64__8wekyb3d8bbwe<br />xboxgames -- Microsoft.XboxLIVEGames_1.1.134.0_x64__8wekyb3d8bbwe<br />microsoftvideo -- Microsoft.ZuneVideo_1.1.134.0_x64__8wekyb3d8bbwe<br />bingsearch -- Microsoft.Bing_1.5.1.259_x64__8wekyb3d8bbwe<br />bingweather -- Microsoft.BingWeather_1.7.0.26_x64__8wekyb3d8bbwe<br />bingtravel -- Microsoft.BingTravel_1.7.0.26_x64__8wekyb3d8bbwe<br />xboxliveapp-1496516562 -- HalfbrickStudiosPtyLtd.JetpackJoyride_1.0.3.48_x86__w77bc8x1h5kya<br />microsoftmusic -- Microsoft.ZuneMusic_1.1.144.0_x64__8wekyb3d8bbwe<br />npe -- 50582LuanNguyen.NuGetPackageExplorer_1.1.0.9_neutral__w6y2tyx5bpzwa<br />bingsports -- Microsoft.BingSports_1.8.0.51_x64__8wekyb3d8bbwe<br />bingfinance -- Microsoft.BingFinance_1.7.0.38_x64__8wekyb3d8bbwe<br />bingnews -- Microsoft.BingNews_1.7.0.38_x64__8wekyb3d8bbwe<br />moderndilbert -- 24632RobPaveza.ModernDilbertReader_1.3.1.0_neutral__tpjz84vefy3e6<br />xboxliveapp-1297290206 -- Microsoft.Adera_1.3.0.14265_x86__8wekyb3d8bbwe<br />lync15 -- Microsoft.LyncMX_15.0.4481.1503_x64__8wekyb3d8bbwe<br />lync15mlx -- Microsoft.LyncMX_15.0.4481.1503_x64__8wekyb3d8bbwe<br />skype -- Microsoft.SkypeApp_1.5.0.109_x86__kzf8qxf38zg5c<br />tel -- Microsoft.SkypeApp_1.5.0.109_x86__kzf8qxf38zg5c<br />sms -- Microsoft.SkypeApp_1.5.0.109_x86__kzf8qxf38zg5c<br />message-skype-com -- Microsoft.SkypeApp_1.5.0.109_x86__kzf8qxf38zg5c<br />message-messenger -- Microsoft.SkypeApp_1.5.0.109_x86__kzf8qxf38zg5c<br />audiocall-messenger -- Microsoft.SkypeApp_1.5.0.109_x86__kzf8qxf38zg5c<br />videocall-messenger -- Microsoft.SkypeApp_1.5.0.109_x86__kzf8qxf38zg5c<br />audiocall-skype-com -- Microsoft.SkypeApp_1.5.0.109_x86__kzf8qxf38zg5c<br />videocall-skype-com -- Microsoft.SkypeApp_1.5.0.109_x86__kzf8qxf38zg5c<br />xboxliveapp-1297290209 -- Microsoft.Studios.PinballFx2_1.4.0.486_x86__8wekyb3d8bbwe<br />kindle -- AMZNMobileLLC.KindleforWindows8_1.1.3.0_neutral__stfe6vwa9jnbp<br />ebay -- eBayInc.eBay_1.2.1.65_neutral__1618n3s9xq8tw<br />maps -- 17655DreamTeamMobile.gMaps_1.4.0.56_x64__drr96ftsfk4j0<br />gmaps -- 17655DreamTeamMobile.gMaps_1.4.0.56_x64__drr96ftsfk4j0<br />geo -- 17655DreamTeamMobile.gMaps_1.4.0.56_x64__drr96ftsfk4j0<br />ms-drive-to -- 17655DreamTeamMobile.gMaps_1.4.0.56_x64__drr96ftsfk4j0<br />ms-walk-to -- 17655DreamTeamMobile.gMaps_1.4.0.56_x64__drr96ftsfk4j0<br />ms-bike-to -- 17655DreamTeamMobile.gMaps_1.4.0.56_x64__drr96ftsfk4j0<br />ms-transit-to -- 17655DreamTeamMobile.gMaps_1.4.0.56_x64__drr96ftsfk4j0<br />onenote -- Microsoft.Office.OneNote_15.0.4505.1000_x64__8wekyb3d8bbwe<br />mhmtodo -- MapletonHillMedia.MinimaList_0.0.0.131_neutral__fw9m7z2jr9vjg<br />xboxliveapp-1297290225 -- Microsoft.MicrosoftMahjong_1.6.0.30312_x86__8wekyb3d8bbwe<br />mailto -- microsoft.windowscommunicationsapps_17.0.1114.318_x64__8wekyb3d8bbwe<br />ms-mail -- microsoft.windowscommunicationsapps_17.0.1114.318_x64__8wekyb3d8bbwe<br />wlcalendar -- microsoft.windowscommunicationsapps_17.0.1114.318_x64__8wekyb3d8bbwe<br />wlpeople -- microsoft.windowscommunicationsapps_17.0.1114.318_x64__8wekyb3d8bbwe<br />profile-messenger -- microsoft.windowscommunicationsapps_17.0.1114.318_x64__8wekyb3d8bbwe<br />profile-outlook-com -- microsoft.windowscommunicationsapps_17.0.1114.318_x64__8wekyb3d8bbwe<br />profile-skype-com -- microsoft.windowscommunicationsapps_17.0.1114.318_x64__8wekyb3d8bbwe<br />profile-facebook-com -- microsoft.windowscommunicationsapps_17.0.1114.318_x64__8wekyb3d8bbwe<br />profile-twitter-com -- microsoft.windowscommunicationsapps_17.0.1114.318_x64__8wekyb3d8bbwe<br />profile-google-com -- microsoft.windowscommunicationsapps_17.0.1114.318_x64__8wekyb3d8bbwe<br />profile-weibo-com -- microsoft.windowscommunicationsapps_17.0.1114.318_x64__8wekyb3d8bbwe<br />profile-linkedin-com -- microsoft.windowscommunicationsapps_17.0.1114.318_x64__8wekyb3d8bbwe<br />profile-yahoo-com -- microsoft.windowscommunicationsapps_17.0.1114.318_x64__8wekyb3d8bbwe<br />profile-lync-com -- microsoft.windowscommunicationsapps_17.0.1114.318_x64__8wekyb3d8bbwe<br />mschat -- microsoft.windowscommunicationsapps_17.0.1114.318_x64__8wekyb3d8bbwe<br />message-messenger -- microsoft.windowscommunicationsapps_17.0.1114.318_x64__8wekyb3d8bbwe<br />message-facebook-com -- microsoft.windowscommunicationsapps_17.0.1114.318_x64__8wekyb3d8bbwe<br />message-yahoo-com -- microsoft.windowscommunicationsapps_17.0.1114.318_x64__8wekyb3d8bbwe<br />message-lync-com -- microsoft.windowscommunicationsapps_17.0.1114.318_x64__8wekyb3d8bbwe<br />netflix -- 4DF9E0F8.Netflix_1.7.0.39_x64__mcm4njqhnhss8</code></pre>
<p>Looks like one of the packages is missing its manifest. That's probably some incomplete VS project I've got laying around.</p>
<p>This isn't unique to protocols. Change the "<em>.package...protocol.name</em>" to whatever you're interested in. Most samples on the net are interested in the applications' id, i.e. ".<em>package.applications.application.id</em>"</p>
<p>P.S. Bonus points if you can tell me how to get that output in sorted order. I can't figure out where to stick the <em>Sort-Object</em> command</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
  </channel>
</rss>