<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Observations from Uppsala &#187; Windows</title>
	<atom:link href="http://jakob.engbloms.se/archives/tag/windows/feed" rel="self" type="application/rss+xml" />
	<link>http://jakob.engbloms.se</link>
	<description>Computer Technology: Simulation, Virtualization, Virtual Platforms, Embedded, Multicore and Multiprocessing (by Jakob Engblom)</description>
	<lastBuildDate>Sun, 29 Jan 2012 19:45:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<image>
    <title>Observations from Uppsala</title>
    <url>http://jakob.engbloms.se/favicon.png</url>
    <link>http://jakob.engbloms.se</link>
    <width>32</width>
    <height>32</height>
    <description>Observations from Uppsala - http://jakob.engbloms.se</description>
    </image>		<item>
		<title>Debug, Design, and Microsoft Data</title>
		<link>http://jakob.engbloms.se/archives/1527?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/1527#comments</comments>
		<pubDate>Sat, 19 Nov 2011 15:38:23 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[Communications of the ACM]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[Kinshuman Kinshumann]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Steven Sinofsky]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Windows 8]]></category>
		<category><![CDATA[Windows Explorer]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=1527</guid>
		<description><![CDATA[It used to be that Microsoft was the big, boring, evil company that nobody felt was very inspiring. Today, with competition from Google and Apple as well as a strong internal research department, Microsoft feels very different. There are really interesting and innovative ideas and paper coming out of Microsoft today.  It seems that their [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jakob.engbloms.se/wp-content/uploads/2010/07/windows-phone-logo.png"><img class="alignleft size-full wp-image-1205" title="windows phone logo" src="http://jakob.engbloms.se/wp-content/uploads/2010/07/windows-phone-logo.png" alt="" width="66" height="58" /></a>It used to be that Microsoft was the big, boring, evil company that nobody felt was very inspiring. Today, with competition from Google and Apple as well as a strong internal research department, Microsoft feels very different. There are really interesting and innovative ideas and paper coming out of Microsoft today.  It seems that their investments in research and software engineering are generating very sophisticated software tools (and good software products).</p>
<p>I have recently seen a number of examples of what Microsoft does with the user feedback data they collect from their massive installed base. I am not talking about Google-style personal information collection, but rather anonymous collection of user interface and error data in a way that is more designed to built better products than targeting ads.</p>
<p><span id="more-1527"></span>The first paper is &#8220;<a href="http://dl.acm.org/citation.cfm?id=1965749&amp;bnc=1">Debugging in the (very) large: ten years of implementation and experience</a>&#8221; by Kinshumann et al, Communications of the ACM, July 2011. This paper describes how Microsoft uses of the data they collect from Windows Error Reporting (you know, the little dialog boxes that appear every once in a while on Windows when a program has crashed or frozen, or Windows restored from a crash).</p>
<p>Microsoft has a number of heuristics that look at the data collected, grouping the bug reports into buckets. Ideally, each bucket corresponds to a single root cause for possibly quite different errors. They automatically analyze the errors and generate metadata about the error reports that can be used to generate statistics and allow database queries to be performed over all collected error<br />
reports.  Heuristics include walking through chains of threads blocked on synchronization objects to determine which one is the actual cause of a hang, and finding the most likely thread and stackframe for containing the root cause of an error.  Heuristics are applied both on the client and the server, but mostly on the server. Technically very hard to do right, I can appreciate the huge amount of work that has gone into engineering this.</p>
<p>With this huge pile of information, a new debugging method becomes available: statistics-driven bug finding and prioritization at large scale.  The introduction to the paper puts it very well:</p>
<blockquote><p>Beyond mere debugging from error reports, WER enables a new form of statistics-based debugging. WER gathers all error reports to a central database. In the large, programmers can mine the error report database to prioritize work, spot trends, and test hypotheses. Programmers use data from WER to prioritize debugging so that they fix the bugs that affect the most users, not just the bugs hit by the loudest customers. WER data also aids in correlating failures to co-located components. For example, WER can identify that a collection of seemingly unrelated crashes all contain the same likely culprit—say a device driver—even though its code was not running at the time of failure.</p></blockquote>
<p>For a product manager like me, used to working with individual bug reports in bug reporting systems and trying to manually assess the importance of each error, this is nothing short of a dream.  Instead of trying to guess how many users can be impacted by a bug, Microsoft can run queries against the error report database and get a fairly accurate idea of how common a certain error is in the user base.  This has allowed them to address the most common errors first, leading to Windows and Office becoming more stable for more users in recent generations.  They can also pinpoint which device drivers are causing the most issues, and putting pressure on vendors to clean up their act.</p>
<p>I wonder where else you really apply this idea of statistical debugging. You need a large user base, in systems which are connected to the Internet so you can collect data, and who are comfortable with providing direct feedback to you as a vendor.  Apparently, Apple has the same kind of feature built into iOS, with more than 100 million users which seem not to be too interested in strong privacy.  Presumably, Google can do the same thing with Android, at least its use in phones. Mozilla has a crash reporter, so I guess it makes sense in the consumer space.</p>
<p>But when your user base counts in thousands of seats and half of these are in defense sector beyond air-gaps, it is harder to apply. Products that call home are not taken to kindly in the professional field, as secrecy and confidentiality is very important to big companies. Industrial embedded products like telecom infrastructure might have sufficient volume of code and computer hardware to form a basis for statistical reporting &#8211; as long as operators agree to provide the information to the hardware vendors.</p>
<p>Another example of how Microsoft makes use of their collected data is in UI design. The blog post &#8220;<a href="http://blogs.msdn.com/b/b8/archive/2011/08/29/improvements-in-windows-explorer.aspx">Improvements in Windows Explorer</a>&#8220;, by Steven Sinofsky, from the Windows 8 blog discusses how Windows Explorer has evolved over the years, and how it is now getting a radical redesign based on usage data.  Microsoft is an enviable position here, having collected information about what millions of users are doing.  Definitely beats inspiration or trying with a few users in a classic user interface lab.</p>
<p>I have seen quite a few people criticize this blog post from a variety of angles &#8211; from the fact that they are not data-driven enough and keep rarely-used buttons in the ribbon to the fact that they remove somebody&#8217;s favorite function.  It is also the case that the measurements can only tell you which functions people are using from what is available today &#8211; if you want to invent new things, data like this might not be very helpful.</p>
<p>Fortunately, Microsoft also seems to have taken a clue from Linux and is allowing much more user customization than before. For me, this is great news, as I seem to have a user profile quite far from the mainstream.  We have not seen Windows 8 in its final form just yet, but hopefully this approach will be applied to other parts of that GUI overhaul too.  There are professional Windows users who need an OS that makes even very esoteric operations easy to access, and customizations of things like the start menu possible.  Hopefully, we do not get washed away by the flood of data from regular users.</p>
<p>For some reason, I feel that bug reporting is not as sensitive to the user style as GUI design &#8211; Windows and driver bugs would seem to be more evenly distributed as they depend more on hardware than on software. At least it seems to me that Windows is more stable today<br />
than it was a couple of years ago.</p>
<p>&nbsp;</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/1527"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/1527" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/1527" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/1527/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Off-topic: Windows tip: Hide Desktop Icons</title>
		<link>http://jakob.engbloms.se/archives/1431?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/1431#comments</comments>
		<pubDate>Tue, 07 Jun 2011 12:39:05 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[desktop software]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Windows 7]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=1431</guid>
		<description><![CDATA[I often have to create screenshots and screen recordings as part of my job, and to make that look good I don&#8217;t want any part of my Windows desktop or task bar to show in the results. Until now, I have done this the hard way by using very few desktop icons and putting them [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jakob.engbloms.se/wp-content/uploads/2007/11/a113ad1c-dacb-456b-b0bb-ee6a0ddfef3e.png"><img class="alignleft size-full wp-image-48" style="margin: 5px 10px;" title="Vista" src="http://jakob.engbloms.se/wp-content/uploads/2007/11/a113ad1c-dacb-456b-b0bb-ee6a0ddfef3e.png" alt="" width="63" height="63" /></a>I often have to create screenshots and screen recordings as part of my job, and to make that look good I don&#8217;t want any part of my Windows desktop or task bar to show in the results. Until now, I have done this the hard way by using very few desktop icons and putting them around the edges of the screen.</p>
<p>There is a better way.</p>
<p><span id="more-1431"></span>Just right-click on the desktop, select &#8220;View&#8221; and then &#8220;Show desktop icons&#8221;. So simple.</p>
<p><a href="http://jakob.engbloms.se/wp-content/uploads/2011/06/cleanup-for-recording-tip.png"><img class="aligncenter size-full wp-image-1432" title="cleanup for recording tip" src="http://jakob.engbloms.se/wp-content/uploads/2011/06/cleanup-for-recording-tip.png" alt="" width="545" height="518" /></a>Should have found this years ago. Works on Windows Vista and Windows 7 as far as I know.</p>
<p>&nbsp;</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/1431"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/1431" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/1431" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/1431/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>msys git &#8211; error could not allocate cygwin heap</title>
		<link>http://jakob.engbloms.se/archives/1403?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/1403#comments</comments>
		<pubDate>Wed, 04 May 2011 11:12:04 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[desktop software]]></category>
		<category><![CDATA[off-topic]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[msysgit]]></category>
		<category><![CDATA[tortoisegit]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=1403</guid>
		<description><![CDATA[I am using TortoiseGit on Windows for a while now, and it works OK. However, today, it just stopped working. The error I got persistently was: 0 [main] us 0 init_cheap: VirtualAlloc pointer is null, Win32 error 487 AllocationBase 0x0, BaseAddress 0x68540000, RegionSize 0x480000, State 0x10000 c:\msysgit\bin\sh.exe: *** Couldn't reserve space for cygwin's heap, Win32 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jakob.engbloms.se/wp-content/uploads/2011/05/tortoise-git-logo.png"><img class="alignleft size-full wp-image-1404" title="tortoise git logo" src="http://jakob.engbloms.se/wp-content/uploads/2011/05/tortoise-git-logo.png" alt="" width="95" height="55" /></a>I am using <a href="http://code.google.com/p/tortoisegit/">TortoiseGit </a>on Windows for a while now, and it works OK. However, today, it just stopped working. The error I got persistently was:</p>
<pre>0 [main] us 0 init_cheap: VirtualAlloc pointer is null,
Win32 error 487 AllocationBase 0x0, BaseAddress 0x68540000,
RegionSize 0x480000, State 0x10000
c:\msysgit\bin\sh.exe:
*** Couldn't reserve space for cygwin's heap, Win32 error 0
</pre>
<p><span id="more-1403"></span>More than mildly annoying.</p>
<p>I tried searching the web, and found a number of discussions on similar issues. It was not easy to find one that worked, but in the end it turns out that playing with the base address of the <tt>msys-1.0.dll</tt> file worked. The error is not really in TortoiseGit per se, but rather in <a href="http://code.google.com/p/msysgit/">msysgit </a> (which tortoisegit relies on to actually do its work).</p>
<p>The magic incantation that I wound up using:</p>
<pre>c:\msysgit\bin&gt;rebase.exe -b 0x50000000 msys-1.0.dll</pre>
<p>Posting it here for the benefit of any other poor soul who is hit by the same. Apparently, you might have to change to use different other addresses.</p>
<p>The details of my setup for reference:</p>
<ul>
<li>msysgit 1.7.4</li>
<li>tortoisegit 1.6.5.0</li>
<li>Windows 7, 64-bit</li>
</ul>
<p>&nbsp;</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/1403"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/1403" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/1403" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/1403/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Product Holes: Microsoft Office vs Internet Explorer</title>
		<link>http://jakob.engbloms.se/archives/1297?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/1297#comments</comments>
		<pubDate>Fri, 22 Oct 2010 10:05:17 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[desktop software]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[testing]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[office 2007]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=1297</guid>
		<description><![CDATA[There seems to be no shortage of bugs that &#8220;should have been obvious&#8221; and subject to the &#8220;how can you not check that your own products work together&#8221; phenomenon. Just the other day, I stumbled on another one. This time, it was the Microsoft set of applications and operating systems that do not quite work [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jakob.engbloms.se/wp-content/uploads/2010/06/happy-key.png"><img class="alignleft size-full wp-image-1148" style="margin: 5px 10px;" title="happy key" src="http://jakob.engbloms.se/wp-content/uploads/2010/06/happy-key.png" alt="" width="95" height="97" /></a>There seems to be no shortage of bugs that &#8220;should have been obvious&#8221; and subject to the &#8220;how can you not check that your own products work together&#8221; phenomenon. Just the other day, I stumbled on another one. This time, it was the Microsoft set of applications and operating systems that do not quite work together the way you would expect them to.</p>
<p><span id="more-1297"></span></p>
<p>Here is the scenario.</p>
<p>We have a wiki system on our Intranet at Wind River, where I attached a Powerpoint 2007 presentation to a file in the wiki. This file has the extension <strong>.pptx</strong>, as they tend to do. I do this in Firefox, and I can download and save and view the files with no problems:</p>
<p><a href="http://jakob.engbloms.se/wp-content/uploads/2010/10/pptxinfirefox.png"><img class="aligncenter size-full wp-image-1299" title="Open pptx attachment in Firefox" src="http://jakob.engbloms.se/wp-content/uploads/2010/10/pptxinfirefox.png" alt="" width="455" height="326" /></a>A colleague of mine tried to do download the presentation, but failed. The problem for her was that she was using Microsoft&#8217;s Internet Explorer, rather than Firefox. IE did not recognize .pptx, and instead did some kind of magic lookup and decided that the file is a .zip file:</p>
<p><a href="http://jakob.engbloms.se/wp-content/uploads/2010/10/pptx-in-ie.png"><img class="aligncenter size-full wp-image-1300" title="pptx in ie" src="http://jakob.engbloms.se/wp-content/uploads/2010/10/pptx-in-ie.png" alt="" width="430" height="306" /></a>So here we have a case where Firefox is able to recognize a file extension, but not Microsoft&#8217;s own web browser. The reason that IE and Firefox are using the file extension is that our wiki did not have a MIME filetype set for the .pptx files, leaving each client to figure it out on their own.</p>
<p>To compound the problem, the simple fix to change the file extension of the downloaded file from .zip to .pptx is not available per default on modern Windows systems. The default policy is to  hide extensions for known file types, so they are unavailable to be edited. The fix is to reveal all file extensions, which at least for me is the first thing I do when I get a new system setup. As  a programmer, I need to know exactly what things are, and quite often change their extensions.</p>
<p><a href="http://jakob.engbloms.se/wp-content/uploads/2010/10/hide-extensions.png"><img class="aligncenter size-full wp-image-1301" title="hide extensions" src="http://jakob.engbloms.se/wp-content/uploads/2010/10/hide-extensions.png" alt="" width="396" height="481" /></a></p>
<p>I guess that Microsoft only tested things in a completely homogeneous system. I assume that if you use Microsoft ISS as your webserver (in a recent version), it will give you the right MIME type automatically. Testing with an Apache server or an old server version might not have been in the plans for Microsoft IE8. Once again, we see that testing requires some imagination to do well.</p>
<p>I would like to note that this problem is not new, and there is a writeup at <a href="http://www.pptfaq.com/FAQ00911.htm ">http://www.pptfaq.com/FAQ00911.htm </a>explaining the issue and some related issues as well.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/1297"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/1297" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/1297" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/1297/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft + ARM = ARM64?</title>
		<link>http://jakob.engbloms.se/archives/1204?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/1204#comments</comments>
		<pubDate>Tue, 27 Jul 2010 19:57:05 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[business issues]]></category>
		<category><![CDATA[computer architecture]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[ARM]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=1204</guid>
		<description><![CDATA[The recent news that Microsoft has taken out an ARM architectural license has caused a lot of speculation about just what this might mean. There are several quite well reasoned ideas around the web, and I have one idea of my own: sixty-four bits. Here is a list of some of the ideas I have [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://jakob.engbloms.se/wp-content/uploads/2010/07/windows-phone-logo.png"><img class="alignleft size-full wp-image-1205" title="windows phone logo" src="http://jakob.engbloms.se/wp-content/uploads/2010/07/windows-phone-logo.png" alt="" width="66" height="58" /></a>The recent news that Microsoft has taken out an ARM architectural license has caused a lot of speculation about just what this might mean. There are several quite well reasoned ideas around the web, and I have one idea of my own: sixty-four bits.</p>
<p><span id="more-1204"></span></p>
<p>Here is a list of some of the ideas I have seen floating around:</p>
<ul>
<li>They are going to put <a href="http://armdevices.net/2010/07/23/the-secrets-behind-microsofts-new-arm-license/">Windows 7 on ARM </a>to <a href="http://gigaom.com/2010/07/23/4-actions-microsoft-can-take-with-an-arm-license/">defend against Linux in the sub-netbook segment</a>. Certainly a useful move &#8211; but do you need an architecture license for that? It would not make much sense to put Windows on ARM in a way that requires you to have a Microsoft-designed processor core to run it.</li>
<li>It is a case of Apple &#8220;A4&#8243; envy &#8211; if Apple can build their own custom ARM chip for a consumer devices in the tablet space, <a href="http://gigaom.com/2010/07/23/4-actions-microsoft-can-take-with-an-arm-license/">so can Microsoft</a>. I think this makes a lot of sense. But once again, what use is a license to design your own ARM core and ARM instructions? <a href="http://unplugged.rcrwireless.com/index.php/20100723/news/2226/why-microsoft-acquired-an-arm-license/">Apple does not seem to have created a custom processor core</a>, instead using a standard ARM Cortex-A8 core in the A4 chip as far as I understand.</li>
<li><a href="http://arstechnica.com/microsoft/news/2010/07/microsoft-should-cut-out-the-middle-men-and-build-its-own-phones.ars/2">Handheld gaming, building their own phone</a>. It is essentially the A4 envy argument, and I cannot see how an architecture license will help.</li>
<li><a href="http://www.computerweekly.com/Articles/2010/07/23/242079/Microsoft-licenses-ARM-tech-in-bid-to-own-39internet-of.htm">Deeply embedded devices</a>. Microsoft wants to ride the ARM wave into things like power meters and other truly embedded systems. Once again, that might certainly be a good idea &#8211; but why an architecture license?</li>
<li>As a defensive move in the Microsoft-Intel relationship. If Intel is toying with Linux, Microsoft can be toying with ARM. In that context, a few million dollars to acquire a license to do nothing much with it might make sense as negotiation leverage.</li>
</ul>
<p>The best idea I think is the <a href="http://gigaom.com/2010/07/23/4-actions-microsoft-can-take-with-an-arm-license/">server angle</a>. ARM is making inroads into servers where single-thread processor speed is not that important. The power consumption advantage over x86 is significant, as long as you do not need utter speed or very many cores sharing memory.</p>
<p>Power-efficient servers is an area where Microsoft can certainly see the potential for truly revolutionary changes in the IT field. There is no reason why x86 would be the best architecture there, and the fact that x86 is controlled by Intel and AMD makes it very hard for Microsoft to really take part in hardware-software innovation. Essentially, Intel and AMD design the processors, and the software has to adapt. This model is not optimal if you want to really see what you can do with the hardware-software boundary.</p>
<p>Thus, if I think Microsoft might do with the ARM license is to start tinker with the OS interface of the hardware. The beneficiary would be both Microsoft and ARM, since Microsoft innovations for ARM might well become standard in ARM land. For example, an OS might benefit tremendously from small changes in the processor in areas like:</p>
<ul>
<li>Memory management &#8211; a hardware scheme tailored to what Microsoft sees being done in their operating systems and their third-party server software could certainly be very beneficial to efficiency.</li>
<li>Multicore and multithreading &#8211; ARM has some special support in their MPCore designs for communicating between cores in a multicore system. Such support could be extended to help the OS manage both threads and processors across multicore designs. Also, ARM might want some help from Microsoft to design a scalable OS interface that works for tens or hundreds of tightly-coupled cores (rather than the current limit of 4 in ARM Cortex-A9 MP).</li>
<li>More bits &#8211; the biggest architectural problem I see with ARM in servers is that ARM is currently a 32-bit architecture. 32 bits are not enough for even medium servers today. Having Microsoft help ARM design a 64-bit version of the ARM architecture sounds far-fetched, but it is certainly something where a license to change the ARM instruction set would help.</li>
<li>ARM instruction set additions to help build an emulator for x86 instructions on ARM, to allow current  x86-Windows applications to run on an ARM-based device. This is an idea which has been tried in the past and which has never been very successful in the market. ARM currently has a set of instructions which help accelerate virtual machines such as .net and JVM, and I think that is as far as this idea has been proven useful.</li>
</ul>
<p>In summary, the only reasonable use I can see that Microsoft would make of a license to build custom ARM processor cores and tweak instruction sets would be to build better servers, by improving multicore communications mechanisms, upping ARM to 64 bits, tweaking the MMU design, and possibly creating some kind of x86 emulation support.</p>
<p>That said, I think the most likely result is a custom ARM-based chip to power a phone or tablet or other consumer electronics device, running a Microsoft software stack (derived from Win CE/Windows Phone) on Microsoft hardware, all sold as a Microsoft product. Essentially, doing the <a href="http://arstechnica.com/microsoft/news/2010/07/microsoft-should-cut-out-the-middle-men-and-build-its-own-phones.ars/2">Apple all-integrated solution.</a></p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/1204"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/1204" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/1204" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/1204/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Worm Attacking Industrial Control Systems</title>
		<link>http://jakob.engbloms.se/archives/1200?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/1200#comments</comments>
		<pubDate>Wed, 21 Jul 2010 19:18:13 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[embedded software]]></category>
		<category><![CDATA[embedded systeme]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[SCADA]]></category>
		<category><![CDATA[Siemens]]></category>
		<category><![CDATA[USB]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[worm]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=1200</guid>
		<description><![CDATA[There is a very interesting worm going around the world right now which is specifically targeting industrial control systems. According to Business Week, the worm is targeting a Siemens plant control system, probably with the intent to steal production secrets and maybe even information useful to create counterfeit products. This is the first instance I [...]]]></description>
			<content:encoded><![CDATA[<p>There is a very interesting worm going around the world right now which is specifically targeting industrial control systems. According to <a href="http://www.businessweek.com/idg/2010-07-17/new-virus-targets-industrial-secrets.html">Business Week, </a>the worm is targeting a <a href="http://en.wikipedia.org/wiki/SCADA">Siemens plant control system</a>, probably with the intent to steal production secrets and maybe even information useful to create counterfeit products. This is the first instance I have seen of malware targeting the area of embedded systems. However, the actual systems targeted are not really embedded systems, but rather regular PCs running supervision and control software.</p>
<p><span id="more-1200"></span>There are two important aspects to this worm, as I see it.</p>
<p>First, it only works due to the fact that the software in question is running on regular Windows PCs.  An  attack on a real embedded OS like Wind River VxWorks or Enea OSE would  be more interesting, and much scarier since that would mean a much more devoted enemy. In this case, the attackers are opportunistic, using the window of vulnerability of a <a href="http://www.microsoft.com/technet/security/advisory/2286198.mspx">new Windows flaw </a>to attack Windows-based plant control systems. They also use <a href="http://blogs.technet.com/b/mmpc/archive/2010/07/16/the-stuxnet-sting.aspx">signed Windows drivers</a>, which is apparently a new development in malware. All quite interesting in its own right, and worth reading about for those interested in security.</p>
<p>Second, the malware spreads using physical movement of USB memory sticks rather than attacks over the Internet or other networks. This makes the very important point that even if systems are not connected to the Internet, they can still be attacked if something crosses the &#8220;<a href="http://en.wikipedia.org/wiki/Air_gap_%28computing%29">air gap</a>&#8221; that separates them from the outside world. In this case, a plant would be infected by using <a href="http://technet.microsoft.com/en-us/magazine/2008.01.securitywatch.aspx">social engineering to make some employee carry an infected USB stick </a>into the plant and putting it into some internal PC. Once the infection is inside the plant, it might spread over networks or by USB sticks moving around inside the presumably protected perimeter.</p>
<p>The lesson I think we can draw from this is that using general-purpose desktop operating systems for critical systems is a bad idea. Using a more obscure real-time OS (or even Linux) would probably reduce the number of vulnerabilities &#8211; but more importantly, it would make it much more difficult to make an infection hop from computer to computer until it reaches its target.</p>
<p>In this particular case, all Windows machines are potential bearers and spreaders of the infection. An attacker can rely on that fact to seed the Windows ecosystems at some place, hoping to get the infection hopping from machine to machine until it reaches something interesting. There is no real need to seed the infection directly into the target plant. If the target systems had been running a different OS, the attackers would have had to get really close to the target, making them easier to stop.</p>
<p>Overall, embedded systems security is something that we need to take much more seriously going forward. As we rely on embedded control systems to run much of the modern infrastructure and economy, we really need to be concerned about how to secure these systems. Security needs to be part of the architecture of embedded systems, including their operating systems (please make them as robust as possible), application designs, and networking systems. Unfortunately, current embedded technology tends to be designed to work, with little care for how they could be broken by an intentional attack. One scary example of this was provided in the <a href="http://www.grc.com/sn/sn-251.htm">SecurityNow podcast episode #251</a>, where a listener shows how easy it could be to take remote control over a car due to carelessly designed fleet management units.</p>
<p><em>Updated information</em></p>
<p>I found some more in-depth information on the issue at <a href="http://www.infoworld.com/d/security-central/siemens-warns-users-dont-change-passwords-after-worm-attack-915?page=0,0&amp;source=rss_security_central">Infoworld</a>. It notes that the software that is attacked is vulnerable since all installations use the same password to login &#8211; changing it is likely to break it. That is totally ridiculous as a security solution, period.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/1200"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/1200" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/1200" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/1200/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Off-Topic: Getting Excel to Open Files Again</title>
		<link>http://jakob.engbloms.se/archives/950?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/950#comments</comments>
		<pubDate>Sun, 11 Oct 2009 17:28:34 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[desktop software]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[excel 2007]]></category>
		<category><![CDATA[office 2007]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=950</guid>
		<description><![CDATA[For a while now, I have had the issue that I could not open Excel sheets (files) by double-clicking them in the Windows Explorer, nor could I directly open Excel sheets sent to me in email from within Outlook. I got an error like this: &#8220;Cannot find the file path (or one of its components). [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-229" style="margin: 10px 5px;" title="excel1" src="http://jakob.engbloms.se/wp-content/uploads/2008/08/excel1.png" alt="excel1" width="47" height="46" />For a while now, I have had the issue that I could not open Excel sheets (files) by double-clicking them in the Windows Explorer, nor could I directly open Excel sheets sent to me in email from within Outlook. I got an error like this: &#8220;Cannot 		  find the file <var>path</var> (or one of its components). Make 		  sure the path and file name are correct and that all required libraries are 		  available.&#8221;</p>
<p>Turned out this is a fairly common problem, with a documented solution.</p>
<p><span id="more-950"></span>It is <a href="http://support.microsoft.com/kb/211494/">MS knowledge base article 211494</a>.</p>
<p>For some reason, you need to go into Excel options and have it allow other programs to access Excel via DDE, as in the screenshot below:</p>
<p><a href="http://jakob.engbloms.se/wp-content/uploads/2009/10/fixed-excel-issue.png"><img class="aligncenter size-medium wp-image-951" title="fixed excel issue" src="http://jakob.engbloms.se/wp-content/uploads/2009/10/fixed-excel-issue-300x244.png" alt="fixed excel issue" width="300" height="244" /></a></p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/950"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/950" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/950" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/950/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Driving an Old Canon Scanner using a VM</title>
		<link>http://jakob.engbloms.se/archives/842?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/842#comments</comments>
		<pubDate>Wed, 15 Jul 2009 18:43:50 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[desktop software]]></category>
		<category><![CDATA[virtual machines]]></category>
		<category><![CDATA[Canon]]></category>
		<category><![CDATA[LIDE30]]></category>
		<category><![CDATA[scanner]]></category>
		<category><![CDATA[USB]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[VMWare]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=842</guid>
		<description><![CDATA[I have an old Canon LIDE 30 scanner that I purchased sometime late in 2003. At that time, it was connected to a PC running Windows XP, and drivers worked just fine. However, after I got my new computer in early 2009, with Vista 64, there are no more drivers available. There is a funny [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-843" style="margin-left: 5px; margin-right: 5px;" title="lide30" src="http://jakob.engbloms.se/wp-content/uploads/2009/07/lide30.gif" alt="lide30" width="100" height="67" />I have an old <a href="http://www.canon-europe.com/For_Home/Product_Finder/Scanners/Flatbed/LIDE30/index.asp">Canon LIDE 30 </a>scanner that I purchased sometime late in 2003. At that time, it was connected to a PC running Windows XP, and drivers worked just fine. However, after I got my new computer in early 2009, with Vista 64, there are no more drivers available. There is a funny way around this though, using a virtual machine.</p>
<p><span id="more-842"></span>What I ended up doing to keep using my scanner (whose hardware is still very much intact and solid) is fairly obvious: I installed my old Windows XP license on a VMWare virtual machine (I had the good luck to have a full license with physical media), and then install the Canon LIDE30 driver on that virtualized XP.</p>
<p>VMWare Player is sufficient to let me attach the physical scanner to the virtual machine&#8217;s USB interface, and drive it without the host Vista 64 machine being any the wiser. To get the scanned pictures out, I have to resort to drag-and-drop, as I have failed to get shared folders to work with Player for some unknown reason.</p>
<p>The end result can be pretty complex&#8230; To send some emails from my work computer including scans with this scanner, I had to:</p>
<ul>
<li> Scan on the virtual XP machine</li>
<li>Drag-and-drop to the Pictures folder on my Vista 64 machine</li>
<li>Use file-sharing in Windows to move to my work laptop</li>
<li>Attach in Outlook</li>
</ul>
<p>Workable. It is also a pretty good demo of the power afforded by modern consumer operating systems. Imagine trying to do that in 1995&#8230; would not have been quite as fun.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/842"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/842" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/842" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/842/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Off-Topic: Vista, Laserwriter 12/640 PS, and FoxIt</title>
		<link>http://jakob.engbloms.se/archives/740?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/740#comments</comments>
		<pubDate>Sun, 19 Apr 2009 19:23:28 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[desktop software]]></category>
		<category><![CDATA[history of computing]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[FoxIt reader]]></category>
		<category><![CDATA[laserwriter]]></category>
		<category><![CDATA[print]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=740</guid>
		<description><![CDATA[I have an old Apple LaserWriter 12/640 PS network printer at home that I bought back in 1997. In those days, I had a PowerBook G3 at 266 MHz, Windows NT was new, and my work computer was one of Sweden&#8217;s first 300 MHz Pentium II machines&#8230; since then, my home machines have moved from [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-743" title="laserwriter12640" src="http://jakob.engbloms.se/wp-content/uploads/2009/04/laserwriter12640.jpg" alt="laserwriter12640" width="59" height="50" />I have an old <a href="http://en.wikipedia.org/wiki/LaserWriter_12/640_PS">Apple LaserWriter 12/640 PS </a>network printer at home that I bought back in 1997. In those days, I had a PowerBook G3 at 266 MHz, Windows NT was new, and my work computer was one of Sweden&#8217;s first 300 MHz Pentium II machines&#8230; since then, my home machines have moved from MacOS 8 to Windows NT 4 to Windows 2000 to Windows XP and now Windows Vista 32- and 64-bit. But the trusty LaserWriter remains, keeps printing, and is still on its first toner cartridge!</p>
<p>However, moving to Vista has made the printing bit harder.</p>
<p><span id="more-740"></span>In Windows XP, there were drivers available for the printer, since it was fairly recent when XP was released. In Vista, no such luck. So you have to resort to using &#8220;LPR&#8221; printing (optional install), and using the generic &#8220;Microsoft Imagesetter&#8221; as the printer profile. This, somewhat surprisingly, works pretty well.</p>
<p>With one exception: Acrobat.</p>
<p>It seems that Acrobat is trying so hard to be smart about printing that it gets confused by the Imagesetter bit, and decides that the thing on the other end is not a Postscript printer. And thus, it needs to have a 600 dpi bitmap of the page being printed sent to it. Needless to say, my old printer with its upgraded 12 MB of RAM (it came with 4, and I scavenged 8 more MB from some old dead PC that passed through my hands in the late 1990&#8242;s) usually chokes on this.</p>
<p>When my last XP machine was retired, this did indeed create a problem, since all official online forms tend to be Acrobat-based.</p>
<p>However, by accident and luck I decided to try the <a href="http://www.foxitsoftware.com/">Foxit Reader</a> as an Acrobat Reader alternative. This has turned out to be the perfect to solution to my printing woes. With Foxit, a PDF file prints as a small nice regular vector graphics file that my LaserWriter has little problem printing. It makes printing PDFs feasible and reliable again, and means that I do not have to go out and figure out which new printer to buy. It is kind of cool to have such a decade-old technology icon at home, and still in working order.</p>
<p>A final note: 12 MB in my printer. My first hard drive back in 1990 had 20 MB on it. My new desktop Core i7 machine just got upped to 9 GB of RAM. Back in 1991, I had my high school&#8217;s most powerful home computer: a Macintosh SE/30 with all of 5 MB of RAM (which cost a fortune at the time).</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/740"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/740" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/740" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/740/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Off-Topic: Office 2007 Weird Windows Explained</title>
		<link>http://jakob.engbloms.se/archives/617?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/617#comments</comments>
		<pubDate>Fri, 23 Jan 2009 20:55:47 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[desktop software]]></category>
		<category><![CDATA[excel 2007]]></category>
		<category><![CDATA[MDI interface]]></category>
		<category><![CDATA[office 2007]]></category>
		<category><![CDATA[window management]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=617</guid>
		<description><![CDATA[This is a short note about an &#8220;aha&#8221; moment: ArsTechnica just explained why Excel 2007 windows that look like being documents are not quite that, and how I sometimes manage to start multiple Excel processes by mistake. It seems that Excel is not truly a multi-window app like Word is&#8230; but still an MDI app [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-229" style="margin: 5px 10px;" title="excel1" src="http://jakob.engbloms.se/wp-content/uploads/2008/08/excel1.png" alt="excel1" width="47" height="46" />This is a short note about an &#8220;aha&#8221; moment: <a href="http://arstechnica.com/articles/paedia/dock-and-windows-7-taskbar.ars/2">ArsTechnica just explained why Excel 2007 windows </a>that look like being documents are not quite that, and how I sometimes manage to start multiple Excel processes by mistake. It seems that Excel is not truly a multi-window app like Word is&#8230; but still an MDI app that fakes windows in a way that makes the Windows task bar and Vista task switcher fairly confused. Thanks for the explanation.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/617"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/617" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/617" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/617/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Off-Topic: Getting the good Vista Screen Capture Tool</title>
		<link>http://jakob.engbloms.se/archives/580?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/580#comments</comments>
		<pubDate>Sun, 11 Jan 2009 21:27:32 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[desktop software]]></category>
		<category><![CDATA[screen capture]]></category>
		<category><![CDATA[Skärmklippsverktyget]]></category>
		<category><![CDATA[SnagIt]]></category>
		<category><![CDATA[Snipping Tool]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=580</guid>
		<description><![CDATA[I have heard some rumors that Windows Vista had a good screen capture tool built into the operating system itself. So when I needed to do some capturing on my home machine, I started looking for it. Turned out that it is an optional install on certain versions of Vista only, but Home Premium is [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-48" style="margin: 5px 10px;" title="Vista" src="http://jakob.engbloms.se/wp-content/uploads/2007/11/a113ad1c-dacb-456b-b0bb-ee6a0ddfef3e.png" alt="Vista" width="63" height="63" />I have heard some rumors that Windows Vista had a good screen capture tool built into the operating system itself. So when I needed to do some capturing on my home machine, I started looking for it. Turned out that it is an optional install on certain versions of Vista only, but Home Premium is one of those versions. The tool is called &#8220;Snipping Tool&#8221; in English versions, or &#8220;Skärmklippsverktyget&#8221; in Swedish versions.</p>
<p><span id="more-580"></span>To get it installed, I found good instructions in the <a href="http://www.winhelponline.com/blog/is-the-snipping-tool-missing-in-your-windows-vista-pc/">WinhelpOnline Blog</a>. The only annoyance was that it was put on the top level of accessories folder, and not under Tablet PC&#8230; despite being a part of that toolset. It is here on my machine:</p>
<p><img class="aligncenter size-full wp-image-581" title="snipping-tool-in-swedish" src="http://jakob.engbloms.se/wp-content/uploads/2009/01/snipping-tool-in-swedish.png" alt="snipping-tool-in-swedish" width="535" height="507" /></p>
<p>Still note that for professional heavy-duty screen dumping and capturing, nothing beats SnagIt!</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/580"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/580" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/580" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/580/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Off-Topic: Moving an iTunes Library to a New Machine</title>
		<link>http://jakob.engbloms.se/archives/572?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/572#comments</comments>
		<pubDate>Sat, 10 Jan 2009 08:12:23 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[desktop software]]></category>
		<category><![CDATA[gadgets]]></category>
		<category><![CDATA[iLounge]]></category>
		<category><![CDATA[iPod]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=572</guid>
		<description><![CDATA[I just got myself a new home PC, to replace my no longer very trusty five-year old Athlon-based PC. In the process, I realized I had to move my iTunes library from the old machine to the new. Reading on the web and the Apple support area made me somewhat skeptical as to the feasibility [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-573" style="margin: 5px 10px;" title="ituneslogo" src="http://jakob.engbloms.se/wp-content/uploads/2009/01/ituneslogo.png" alt="ituneslogo" width="61" height="61" />I just got myself a new home PC, to replace my no longer very trusty five-year old Athlon-based PC. In the process, I realized I had to move my iTunes library from the old machine to the new. Reading on the web and the Apple support area made me somewhat skeptical as to the feasibility of this operation&#8230; would all my cover art, podcast subscriptions, playlists and ratings survive the move? There are many stories of failed moves and lost data out there&#8230; and moving from Windows XP to Vista 64-bit did not make the dread less.</p>
<p>In the end, it turned out it was really dead easy!</p>
<p><span id="more-572"></span>The steps are the following (please refer to <a href="http://www.ilounge.com/index.php/articles/comments/moving-your-itunes-library-to-a-new-hard-drive/">this guide at iLounge </a>for more background and details):</p>
<ul>
<li>On the new machine, start iTunes and authorize it using user iTunes store account.</li>
<li>Make sure the folder you use as your iTunes library folder is within the Windows standard user data places, like the default location inside &#8220;Documents\Music&#8221; on XP and &#8220;C:\User\username\Music&#8221; on  Vista. It needs not be in your user&#8217;s hierarchy, I had mine in the shared hierarchy and that worked fine.</li>
<li>Consolidate your iTunes library, using the iTunes 8 File-Library-Consolidate Library option.</li>
<li>Copy everything in that iTunes library folder to the corresponding location on the new machine. In my case, this was the folder called &#8220;Shared Music&#8221; in the &#8220;Public&#8221; part of the file system.</li>
<li>The iTunes database is separate from the storage of files. On Vista, it was located in User\Username\Music\iTunes. This is easy to find, as it is created when iTunes is started. After locating it, simply replace the iTunes folder on the new machine with the one from the old machine (without iTunes running!).</li>
<li>Start iTunes on the new machine, and all your data and music should be there!</li>
</ul>
<p>For me, this worked on the first try. The key thing that I had to do was the consolidation phase&#8230; there were some files outside of the managed iTunes folder that needed to be copied into it in order to make this work completely.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/572"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/572" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/572" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/572/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Off-Topic: Toddlers Rotating the Screen in Windows</title>
		<link>http://jakob.engbloms.se/archives/553?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/553#comments</comments>
		<pubDate>Mon, 05 Jan 2009 19:33:52 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[desktop software]]></category>
		<category><![CDATA[screen rotation]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=553</guid>
		<description><![CDATA[This is really quite funny: it is now twice that slightly panicked family members have called me to ask how to rotate the screen in Windows XP back to normal after toddlers of about six to eight months of age have managed to rotate it to 90 degrees or upside down by just banging on [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-48" style="margin: 5px 10px;" title="Vista" src="http://jakob.engbloms.se/wp-content/uploads/2007/11/a113ad1c-dacb-456b-b0bb-ee6a0ddfef3e.png" alt="Vista" width="63" height="63" />This is really quite funny: it is now twice that slightly panicked family members have called me to ask how to rotate the screen in Windows XP back to normal after toddlers of about six to eight months of age have managed to rotate it to 90 degrees or upside down by just banging on the keyboards of their computers, as small children tend to do.</p>
<p><span id="more-553"></span>To do this, it seems that you need to have a display driver that supports rotation and installs the keyboard shortcuts for it:</p>
<ul>
<li>ctrl-alt-up/down/left/right arrow</li>
</ul>
<p>It seems that children tend to hit the left or right arrow, leaving the screen rotated. This rotation survives reboots it seems,</p>
<p>To fix it, just press ctrl-alt-up arrow and the screen should be right fine.</p>
<p>I have not been able to duplicate this on any of my own machines, as that shortcut does not seem to be active on them.</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/553"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/553" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/553" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/553/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Off-topic: Outlook 2007 Zoom Bad GUI</title>
		<link>http://jakob.engbloms.se/archives/413?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/413#comments</comments>
		<pubDate>Tue, 02 Dec 2008 21:11:15 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[desktop software]]></category>
		<category><![CDATA[bugs]]></category>
		<category><![CDATA[GUI design]]></category>
		<category><![CDATA[office 2007]]></category>
		<category><![CDATA[outlook 2007]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[zoom]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=413</guid>
		<description><![CDATA[It is a symptom of bad UI design when things just happen, and you have no why, and no visible indication to help you figure it out. Last night, I noted that the text in Outlook when composing email suddenly was way larger than normal. I put that way as a fluke, but today, the [...]]]></description>
			<content:encoded><![CDATA[<p>It is a symptom of bad UI design when things just happen, and you have no why, and no visible indication to help you figure it out. Last night, I noted that the text in Outlook when composing email suddenly was way larger than normal. I put that way as a fluke, but today, the effect was still there, all the time. Strange. So I went in and checked my font settings, which were all fine. <span> </span>This being Office 2007, I suspected some kind of zoom effect, but there was no zoom indicator in any Outlook window. I tried ctrl-+ and ctrl&#8211; to see if Outlook respected the web-style view size shortcuts. But no effect.</p>
<p><span id="more-413"></span></p>
<p>So I dove into the help system, and the first hit was the right one.</p>
<p>A topic called, of all things, &#8220;The text of my message is larger or smaller than usual&#8221;:</p>
<p><img class="aligncenter size-full wp-image-414" title="outlook-zoom-view" src="http://jakob.engbloms.se/wp-content/uploads/2008/12/outlook-zoom-view.png" alt="" width="500" height="454" /></p>
<p>If you read that closely, you realize that what we have here is a really bad case of product design and bug fixing. Essentially, they have put in a documentation fix for a bad UI problem. This text is a plain admission that people do this by mistake and have no idea what they did to cause it, or even that they are seeing a zoomed view. The root problem is that the zoom activitity can be done by mistake, by the shortcut &#8220;ctrl-scrollwheel-on-mouse&#8221;. Microsoft must have noticed this in testing, and put in a piece of help to help you out. But before you can find that, you need to figure out that you should search the help for the issue.</p>
<p>If you do not have a scroll wheel or don&#8217;t know this, the solution is to get to the format text tab, click zoom, and then change settings in a dialog box. Amazingly bad, consdering the effort going into Outlook:</p>
<p><img class="aligncenter size-full wp-image-415" title="outlook-zoom-view-2" src="http://jakob.engbloms.se/wp-content/uploads/2008/12/outlook-zoom-view-2.png" alt="" width="500" height="99" /></p>
<p>The correct solution is NOT to document it like this, but rather to just have the same little zoom control as all other Office programs and remove the easy-to-hit-by-accident shortcut (maybe it can remain if the effect is clearly seen in the zoom control).</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/413"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/413" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/413" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/413/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Off-topic: Software tip: SnagIT.</title>
		<link>http://jakob.engbloms.se/archives/141?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/141#comments</comments>
		<pubDate>Sun, 22 Jun 2008 19:07:25 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[desktop software]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[screen capture]]></category>
		<category><![CDATA[SnagIt]]></category>
		<category><![CDATA[TechSmith]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/?p=141</guid>
		<description><![CDATA[Sometimes you find this rare gem of a piece of software that just works and that just solves a problem you have been having an itch with for a long time. SnagIT, from TechSmith, is just such a program. It makes doing screen captures and editing them incredibly easy and convenient. It also has some [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft alignnone size-medium wp-image-140" style="float: left;" title="snagitlogo" src="http://jakob.engbloms.se/wp-content/uploads/2008/06/snagitlogo.png" alt="" width="209" height="80" />Sometimes you find this rare gem of a piece of software that just works and that just solves a problem you have been having an itch with for a long time. <a href="http://www.techsmith.com/screen-capture.asp">SnagIT, from TechSmith</a>, is just such a program. It makes doing screen captures and editing them incredibly easy and convenient. It also has some nice extras, like capturing a webpage in its entirety by scrolling the window in Internet Explorer or Firefox. Simple, but a great time saver for me. I feel like I literally saved hours of work time in just a few weeks of using this program. 30 bucks for a piece of software that does screen capture? In my job, a no-brainer. Highly recommended!</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/141"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/141" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/141" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/141/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Off-topic: Open Command Prompt Here on Vista</title>
		<link>http://jakob.engbloms.se/archives/47?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/47#comments</comments>
		<pubDate>Tue, 06 Nov 2007 20:18:49 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[desktop software]]></category>
		<category><![CDATA[command-line]]></category>
		<category><![CDATA[open command prompt here]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/47</guid>
		<description><![CDATA[I just found out that my favorite Windows XP PowerToy is built into Windows Vista. To get to a command-prompt located in any folder directly from the Explorer, follow the instructions found at a Microsoft MSDN blog: Tim Sneath : Windows Vista Secret #1: Open Command Prompt Here. Very useful. But why not make it [...]]]></description>
			<content:encoded><![CDATA[<p><img title="Vista" src="http://jakob.engbloms.se/wp-content/uploads/2007/11/a113ad1c-dacb-456b-b0bb-ee6a0ddfef3e.png" alt="Vista" hspace="10" vspace="10" align="left" />I just found out that my favorite Windows XP PowerToy is built into Windows Vista. To get to a command-prompt located in any folder directly from the Explorer, follow the instructions found at a Microsoft MSDN blog: <a href="http://blogs.msdn.com/tims/archive/2006/09/18/windows-vista-secret-1-open-command-prompt-here.aspx">Tim Sneath : Windows Vista Secret #1: Open Command Prompt Here</a>. Very useful. But why not make it more obvious than &#8220;press shift while right-clicking?&#8221;.<a href="http://blogs.msdn.com/tims/archive/2006/09/18/windows-vista-secret-1-open-command-prompt-here.aspx"><br />
</a></p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/47"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/47" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/47" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/47/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Off-Topic: Vista Refuses Aero for Java</title>
		<link>http://jakob.engbloms.se/archives/43?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/43#comments</comments>
		<pubDate>Tue, 23 Oct 2007 20:16:20 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[desktop software]]></category>
		<category><![CDATA[Aero]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/43</guid>
		<description><![CDATA[Vista just gave me an interesting error message: running a serious Java program required it to turn off the Aero interface. Interesting. What can Java have done to deserve that? Tweet]]></description>
			<content:encoded><![CDATA[<p><a title="Vista Aero does not work with Java" href="http://jakob.engbloms.se/wp-content/uploads/2007/10/vista-aero-cannot-work-with-java.png"><img title="Vista Aero does not work with Java" src="http://jakob.engbloms.se/wp-content/uploads/2007/10/vista-aero-cannot-work-with-java.thumbnail.png" alt="Vista Aero does not work with Java" hspace="20" align="left" /></a>Vista just gave me an interesting error message: running a serious Java program required it to turn off the Aero interface. Interesting. What can Java have done to deserve that?</p>
<p><span id="more-43"></span> <a title="Vista Aero does not work with Java" href="http://jakob.engbloms.se/wp-content/uploads/2007/10/vista-aero-cannot-work-with-java.png"><img src="http://jakob.engbloms.se/wp-content/uploads/2007/10/vista-aero-cannot-work-with-java.png" alt="Vista Aero does not work with Java" /></a></p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/43"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/43" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/43" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/43/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parallel Processing Requires Parallel IO</title>
		<link>http://jakob.engbloms.se/archives/36?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/36#comments</comments>
		<pubDate>Mon, 01 Oct 2007 09:05:54 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[desktop software]]></category>
		<category><![CDATA[multicore computer architecture]]></category>
		<category><![CDATA[multicore software]]></category>
		<category><![CDATA[disk]]></category>
		<category><![CDATA[I/O]]></category>
		<category><![CDATA[office 2007]]></category>
		<category><![CDATA[PC architecture]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/36</guid>
		<description><![CDATA[One common use-case for multicore processing on the desktop and elsewhere is &#8220;doing many things at the same time&#8221;. You could be running many user-interface programs at once, like the &#8220;typical today&#8217;s teenager template&#8221; of tens of IM clients, web sessions, email conversations, music and video players, downloading movies, etc. Or it is a more [...]]]></description>
			<content:encoded><![CDATA[<p>One common use-case for multicore processing on the desktop and elsewhere is &#8220;doing many things at the same time&#8221;. You could be running many user-interface programs at once, like the &#8220;typical today&#8217;s teenager template&#8221; of tens of IM clients, web sessions, email conversations, music and video players, downloading movies, etc. Or it is a more business-like background indexing of harddrives, backups being taken, downloading large business files, compiling software, updating source code repositories, etc.</p>
<p>I have been doing both of these modes to some extent, and the main problem with them at least on a PC is that while the processors might be good at multitasking and sharing the CPU load, my IO system is annoyingly non-parallel.</p>
<p><span id="more-36"></span></p>
<p>At least on my laptop running Windows Vista, any task that accesses the hard drive intensely (compiling, updating source tree, indexing files) blocks any other task that would also be hard drive intense. For some reason, that includes Microsoft Powerpoint and Outlook. So being productive while my machine churns in the background is pretty hard.</p>
<p>In general, this means that any multicore device intended to do many different things at once will have to have IO that is similarly parallelizable. And that means working hard to avoid any choke points where one stream of data can disturb another. The typical PC of today is not that system, with lots of bottlenecks where &#8220;all&#8221; data have to pass. Most embedded multicore SoCs appear at least to have more direct connections from IO to cores, but I have not seen how well it works in practice.</p>
<p>This small rant was written while everything else was locked-up competing for my hard drive. I want a parallel fast disk system in my laptop! Pain!</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/36"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/36" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/36" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/36/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fastscale minimal virtual machines &#8212; beautiful simple idea</title>
		<link>http://jakob.engbloms.se/archives/16?&#038;owa_medium=feed&#038;owa_sid=</link>
		<comments>http://jakob.engbloms.se/archives/16#comments</comments>
		<pubDate>Tue, 28 Aug 2007 19:01:26 +0000</pubDate>
		<dc:creator>Jakob</dc:creator>
				<category><![CDATA[business issues]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[Fastscale]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://jakob.engbloms.se/archives/16</guid>
		<description><![CDATA[A company called Fastscale Technologies has a product that is simple in concept and yet very powerful. Instead of using complete installs of heavy operating systems like Linux or Windows to run applications on virtual machines, they offer tools that provide minimal operating system configurations that are tailored to the needs of a particular application. [...]]]></description>
			<content:encoded><![CDATA[<p>A company called <a href="http://www.fastscale.com/">Fastscale Technologies</a> has a product that is simple in concept and yet very powerful. Instead of using complete installs of heavy operating systems like Linux or Windows to run applications on virtual machines, they offer tools that provide minimal operating system configurations that are tailored to the needs of a particular application. Since only that application is going to be run on the virtual machine, this is sufficient. <a href="http://www.theregister.co.uk/2007/08/27/fastscale_vmware_virtual_manager/">According to press reports, </a>this means that you can run several times more virtual machines on a given host, compared to default OS installs. And boot an order of a magnitude faster.</p>
<p><span id="more-16"></span>The basic premise is definitely one that makes sense. We have seen this at <a href="http://www.virtutech.com">Virtutech</a>, working with stripped-down Linux images on various embedded boards. Turning on and off individual services often has a significant impact on both execution speed and memory consumption of a particular target. The gut reaction when setting up a new target is to think about what can be stripped out rather than on putting in everything that could be useful. Since that will result in a bloated image that will consume resources with little additional value.</p>
<p>The difference is even more obvious for Windows machines, where the speed of the same virtual machine running NT, 2000, XP, or Vista is incredibly different. With Vista and XP in particular, there is much going on in the background eating up memory and processor time. Some simple tuning tricks like turning off animations in the GUI or background indexing can have a very large impact on speed. Same thing goes for graphical desktop Linux distributions, where turning off eye candy results in significant speed increases.</p>
<p>So I believe that Fastscale can offer what they promise, it is a nice simple idea. But as always with a simple idea that makes for a powerful product, there is something more than just the idea. There is a somewhat tricky piece of execution.</p>
<p>The trick that Fastscale brings is to automate the process of creating a minimal but sufficient substrate for a particular application, given the app, target OS, and server hardware. Sounds like dependency checking once you have the data on what needs what, but finding out the particular dependence chains in any particular OS is hard work. Doing it manually is pretty painful, and the Linux kernel configurator is not always up to the task.</p>
<p>It is also a nice example of a case where open-source opens up for new innovation. Doing this kind of configuration to Windows is much harder in practice, if nothing else since you do not get to recompile the kernel yourself.</p>
<p>Also, Linux in particular has rather good support for removing non-essential components, I believe to some extent thanks to its extensive use in embedded software. Embedded people have a tradition of application-specific configurations, and here is a nice case of when that results in a better desktop/server product in the end. Who said embedded requirements were just for a niche market?</p>
<div class="simple_likebuttons_container_small">
      <div class="simple_likebuttons_googleplus">
        <g:plusone size="medium" count="false" href="http://jakob.engbloms.se/archives/16"></g:plusone>
      </div>
    
      <div class="simple_likebuttons_twitter simple_likebuttons_twitter_s">
        <a href="https://twitter.com/share" class="twitter-share-button" data-count="none" data-url="http://jakob.engbloms.se/archives/16" data-lang="en">Tweet</a>
      </div>
    
      <div class="simple_likebuttons_facebook">
        <div id="fb-root"></div>
        <script>(function(d, s, id) {
          var js, fjs = d.getElementsByTagName(s)[0];
          if (d.getElementById(id)) {return;}
          js = d.createElement(s); js.id = id;
          js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
          fjs.parentNode.insertBefore(js, fjs);
        }(document, "script", "facebook-jssdk"));</script>
        <div class="fb-like" data-href="http://jakob.engbloms.se/archives/16" data-send="false" data-layout="button_count" data-show-faces="false" data-width="90"></div>
      </div>
    </div>]]></content:encoded>
			<wfw:commentRss>http://jakob.engbloms.se/archives/16/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

