<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
    <channel>
        <title>ITJOBLOG</title>
        <link>http://www.itjoblog.co.uk/</link>
        <description></description>
        <language>en-US</language>
        <copyright>Copyright 2013</copyright>
        <lastBuildDate>Wed, 27 Mar 2013 13:16:22 +0000</lastBuildDate>
        <generator>http://www.sixapart.com/movabletype/</generator>
        <docs>http://www.rssboard.org/rss-specification</docs>
        
        <item>
            <title>What will it take to save Windows from becoming a workhorse legacy operating system?</title>
            <description><![CDATA[<p>Microsoft released Windows 8 in October 2012, with its&nbsp;key feature being a new tablet-friendly user interface and store-driven app model, though a slightly improved desktop lives alongside it.</p>
<p>It is not going well. Here is a <a href="http://gizmodo.com/5992290/windows-8-blue-all-the-updates-to-the-main-windows-8-apps?post=58550048">user comment on Gizmodo</a> that says a lot about the majority reaction to Windows 8:</p>
<blockquote style="MARGIN-RIGHT: 0px" dir="ltr">
<p>Im still using a computer with win7 on it, so I had not had much experience with win8. That changed when I helped my girlfriend buy a new computer for her mom. In all honesty, we found the win8 interface a huge pain. It took forever to figure out how to use it, and in the end we did everything we could to get back to a normal non-tile setup. Heck, it takes like 3 menus just to get to the shut down screen! Its insane, and the overall experience for the 3 of us was negative (two of which are very experience computer users).</p></blockquote>
<p>Spelling and grammar left as-is! Note a few features of this comment:</p>
<ul>
<li>The person who wants the new Windows machine is the parent. I notice this frequently: a significant part of the Windows market is older (I am not saying elderly!) people who are less interested in the latest shiny new thing and more interested in sticking with their existing trusted apps and familiar user interface. The changes in Windows 8 are not welcome to this kind of user.</li>
<li>The new features in Windows 8 are perceived as obstructive.</li>
<li>There is no mention of touch control or new-style apps. It is a guess, but since the largest market for Windows is low-end laptops without touch screens, it is a fair bet that this is what it was.</li></ul>
<p>The business world is different, of course, and here things like Hyper-V virtualisation or Windows To Go secure deployment are more likely to be appreciated. People are not so different though, whether they are at work or at home, and given that most Windows users spend most of their time on the desktop (hard to avoid however much you like the "Modern UI") I've noticed similar reactions from business people trying out Windows 8.</p>
<p>That is, if they have tried it at all. Most businesses I encounter are sticking with Windows 7.</p>
<p>With PC sales in probably permanent decline, in favour of other computing form factors, is Windows now set to become a legacy workhorse operating system? Will it ever break through on tablets?</p>
<p>Microsoft's official position, as far as I can tell, is that everything is fine. Leaked builds of the next major update, known as Windows Blue, show only minor changes:</p>
<ul>
<li>New 50-50 Snap view for modern apps</li>
<li>Easier and richer Start screen customization</li>
<li>New tile sizes for the Start screen</li>
<li>Internet Explorer 11</li></ul>
<p>Of course there will be more to come; the recently announced <a href="http://www.buildwindows.com/">Build conference</a> in June is when we will find out more. The stage is set for Blue to be generally available by the end of the year.</p>
<p>I am guessing though that Microsoft does not intend to implement what many users would like, things like:</p>
<ul>
<li>Making the Modern UI easier to ignore, by booting straight to the desktop and having file associations set by default to desktop rather than Metro apps</li>
<li>The ability to run Windows Store apps in a desktop window</li>
<li>An option to use the old Start menu</li></ul>
<p>I do see Microsoft's thinking here. There is not much point in making a brand new platform, and then designing it so users can easily ignore it.</p>
<p>It is also true that if Windows 8 had simply been like Windows 7, but a bit better, that would have done nothing to stem its decline.</p>
<p>On the other hand, Microsoft's attitude to the problems people have with Windows 8 seems to me denial. More could be done to help desktop (that is, most) users get to grips with Windows 8. For example, I would like to see small visual clues to the presence of menus and "Charms" features (the right-hand menu which hides many settings, search and sharing features), an easier way to raise the Charms menu with the mouse, and a visible Start button on the desktop.</p>
<p>Windows 8 usability is fine if you make the effort to learn it, but making that effort is hard to justify when the world of modern apps is uninspiring. This is the second and most important area that must be improved, if the world is ever going to want versions of Windows beyond 7. There are few delightful apps, and a large part of the reason is that the built-in controls available to developers for building apps tend to be blocky in appearance, inefficient in use of screen space, and short on important features. </p>
<p>Miguel de Icaza, of Mono, Gnome and Xamarin (C# for mobile) fame, <a href="http://www.theregister.co.uk/2013/03/20/live_chat_miguel_de_icaza/">said on The Register</a> that "the new Windows basically has no style. The style is DOS with large fonts." A little unfair, but he has a point.</p>
<p>We also need to see further unification of Windows 8 and Windows Phone 8. The phone side does have some momentum now, and the app story is better. Why not enable Phone apps to run on Windows 8, as iPhone apps do on the iPad, as well as making it easier for developers to target both phone and tablet with new projects?</p>
<p>Finally, it is time Microsoft came up with inspiring examples of Windows Store apps that really are a joy to use. There are a few good ones. I still like the weather app, and <a href="http://www.microsoft.com/en-us/freshpaint/default.html">Fresh Paint</a> is a good effort though sadly has not made me into an artist. More is needed though, and I am guessing that Microsoft's own developers have the same problems that third parties have faced in trying to code for the new platform.</p>
<p>Yes, Microsoft does need to fine-tune the&nbsp;Windows 8 user interface to make it more enjoyable for upgraders; but what is even more important is that Windows "Blue" needs to improve the Windows Runtime platform. That is the thing to watch for at the forthcoming Build.</p>]]></description>
            <link>http://www.itjoblog.co.uk/2013/03/windows-workhorse-legacy-operating-system.html</link>
            <guid>http://www.itjoblog.co.uk/2013/03/windows-workhorse-legacy-operating-system.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Mobile</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">Rants and Raves</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">Working Life</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">build</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">ipad</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">iphone</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">microsoft</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">mobile</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">windows</category>
            
            <pubDate>Wed, 27 Mar 2013 13:16:22 +0000</pubDate>
        </item>
        
        <item>
            <title>How to teach our kids to code</title>
            <description><![CDATA[






<!--[if gte mso 9]><xml>
 <o:DocumentProperties>
  <o:Revision>0</o:Revision>
  <o:TotalTime>0</o:TotalTime>
  <o:Pages>1</o:Pages>
  <o:Words>458</o:Words>
  <o:Characters>2617</o:Characters>
  <o:Company>Word Herder Media Services</o:Company>
  <o:Lines>21</o:Lines>
  <o:Paragraphs>6</o:Paragraphs>
  <o:CharactersWithSpaces>3069</o:CharactersWithSpaces>
  <o:Version>14.0</o:Version>
 </o:DocumentProperties>
 <o:OfficeDocumentSettings>
  <o:AllowPNG/>
 </o:OfficeDocumentSettings>
</xml><![endif]-->

<!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:TrackMoves/>
  <w:TrackFormatting/>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>EN-US</w:LidThemeOther>
  <w:LidThemeAsian>JA</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:SplitPgBreakAndParaMark/>
   <w:EnableOpenTypeKerning/>
   <w:DontFlipMirrorIndents/>
   <w:OverrideTableStyleHps/>
   <w:UseFELayout/>
  </w:Compatibility>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="&#45;-"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="276">
  <w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]-->

<!--[if gte mso 10]>
<style>
 /* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:Cambria;
	mso-ascii-font-family:Cambria;
	mso-ascii-theme-font:minor-latin;
	mso-hansi-font-family:Cambria;
	mso-hansi-theme-font:minor-latin;}
</style>
<![endif]-->



<!--StartFragment-->

<p class="MsoNormal">How are we doing at teaching our kids how to code? Until
relatively recently, the answer was 'not that well'. Hopefully, things will
improve now that the UK government has seen fit to include computer science as
a key skill. From next January,<a href="http://www.bbc.co.uk/news/education-21261442"> it will be part of the English Baccalaureate</a>, and will be counted as a science in school league tables. In the long run, the Baccalaureate certificates could replace some GCSEs.</p>

<p class="MsoNormal">For a long time, kids in the UK were taught ICT, rather than
computer science, as a part of the science curriculum. ICT concentrated on
teaching kids how to use technology, but didn't necessarily talk about how to
understand it. It's one thing to learn how to create a Word document, and
move things around in it. It's all very well practicing how to put it in an
email attachment and send it to someone. But this is a far cry from understanding the underlying mechanics of technology.</p>

<p class="MsoNormal">In his book <a href="http://programorbeprogrammed.com/">Program or be Programmed</a>, Douglas Rushkoff
talks about how, when any important information revolution comes along, power
tends to be divided along the lines of those who consume, and those who
control. When the alphabet was developed, those in power used it to articulate
themselves in writing, while everyone else listened to them read. By the time the printing press was developed, more of the hearers were able to read, but publication was a privilege enjoyed by a select few.</p>

<p class="MsoNormal">Now, in the digital revolution, Rushkoff suggests that we
face the same challenges. We are in danger of creating a nation of workers who
use technology without really understanding it, and who therefore can't
manipulate it outside of carefully designed parameters.. We can watch countless
dogs on tightropes on YouTube, just so long as we're willing to work within the
confines of Google's system. We can create Powerpoint presentations, as long as
we're happy to accept what Microsoft gives us.</p>

<p class="MsoNormal">Coders move beyond those confines, and are able to create
and manipulate, rather than blindly use. Coders don't have to be content with
the same old mousetrap; they can build a better one</p>

<p class="MsoNormal">Now that computer science has been promoted to a first class
citizen, we may see students getting more interested in programming. This will
be a major boon to an industry that finds itself perennially short of coding
skills.</p>

<p class="MsoNormal">There's just one problem: we're not starting early enough.</p>

<p class="MsoNormal">The computer science component that the government is including in the
baccalaureate covers GCSEs, making it applicable to teens. What about kids in
elementary school, where interests are first realized, and inspiration can take
root at an early age?</p>

<p class="MsoNormal">We need to show children what technology can do at an early
stage, rather than leaving it until later, not simply by exposing them to video
games but by showing them how to make their own programs.<span style="font-size: 1em;">&nbsp;</span></p>

<p class="MsoNormal">The tools for this are already available.&nbsp;MIT produces a wonderful program called
<a href="http://scratch.mit.edu/">Scratch</a> for young children, designed to show them the basics of programming
structure through the use of graphical aids. I tested it on my kids, and they
were creating a 'play' featuring two separate programming objects within half
an hour.</p>

<p class="MsoNormal">If we don't start our kids early and get them truly fired up about coding, where will our next generation of web designers,
coders, and system architects come from? &nbsp;<o:p></o:p></p>

<!--EndFragment-->]]></description>
            <link>http://www.itjoblog.co.uk/2013/03/teaching-how-to-code.html</link>
            <guid>http://www.itjoblog.co.uk/2013/03/teaching-how-to-code.html</guid>
            
            
            <pubDate>Mon, 25 Mar 2013 15:31:38 +0000</pubDate>
        </item>
        
        <item>
            <title>An Interim Personal Retrospective on Agile 2013 Submissions</title>
            <description><![CDATA[I volunteer for the Agile conferences, and have for a number of years. For several years, I was a stage producer, which is similar to a track chair at other conferences. I've been a stage reviewer for several years, and starting two years ago, I was an experience report shepherd. I was even the conference chair for <a href="http://agile2009.agilealliance.org/">Agile 2009</a>. The conference is near and dear to my heart.<br /><br />So, this year, when the experience reports stage and the projects, program, and portfolio stage asked me to review for <a href="http://agile2013.agilealliance.org/">Agile 2013</a>, I said yes. How could I say no? I started reviewing submissions in January, and before I had a client engagement the last week of January, I was caught up. I had reviewed almost everything on both stages.<br /><br />We were four days away from the end of submissions. I was doing an assessment, which for me is a highly intensive engagement. I barely keep up with email, never mind reviews. And, while we expect many submissions at the end of the submission period, I don't think any of us expected that 70% of the submissions would come in during the last 48 hours. <br /><br />Yes, you read that correctly. 70% of the submissions came in during the last 48 hours. <br /><br />We had a goal of providing each submission with a review within one week. Well, we are all volunteers. We all have jobs. How can we provide all of these people with useful feedback when we are slammed?<br /><br />The great thing about this new submission system is that it emailed me with a timestamp of when the submission was entered. I could use that timestamp and review by new submission. I didn't have to look at the comments people made on their old submissions. I could look at just the new submissions first. <br /><br />Here's what stood out for me about the people who submitted in the last 48 hours: Many of their submissions were much less coherent and less organized than the people who submitted earlier. Even the people who submitted earlier in the last week. Some people even just put TBD for significant places in their submission. Or "see my blog". I can't review that. <br /><br />I felt under pressure to review faster. I felt frustrated by my need to live up to the service level agreement of "deliver a review in a week" to each submission. My later reviews are not as empathetic as my earlier reviews. I didn't help people as much as I did earlier. <br /><br />I learned that the <a href="en.wikipedia.org/wiki/Power_law">power law distribution</a>, applies to the submissions for a conference, too! If you see the hockey stick as you finish features in iterations, that's the power law distribution at work. Make your stories smaller. Reduce your work in progress. That's what happened to me. My stories were small, but my backlog was humungous.<br /><br />What will I do going forward? Well, I certainly won't agree to review more than two stages! Will I restrict myself to one stage? I don't know. I love these two stages. The problem is this: I learn from reviewing. This is why I review. How can I turn down such a wonderful opportunity to learn?<br /><br />I learn from writing. I learn from reviewing. One of the things I got to suggest to other people, and do for my own sessions (face-palm) is use <a href="http://c2.com/cgi/wiki?OneStartlingSentence">OneStartlingSentence</a>, as a suggestion for their abstracts. <br /><br />It's hard to write a great abstract. You have to make that first paragraph sing. My colleague last year, Lisamarie Babik, showed me OneStartlingSentence, and I have been trying to use it. Talk about a challenge. You try to write a four-sentence abstract. It's difficult. And when you make it work? Oh, you have a winner!<br /><br />So I had a chance to practice my coaching skills in my writing. I learned a lot. I made connections with people and asked them to write for <a href="http://www.agileconnection.com/">agileconnection.com</a>, where I am the technical editor. I learned more about the power distribution law and how it shows up in the most amazing places. <br /><br />My reviewing is not over, which is why this is an interim retrospective. <br /><br />If you have a chance to submit a session for any conference, here are my suggestions:<br /><br /><ol><li>Submit your proposal/abstract early. If not the first week, do it the second. You will get better feedback. Yes, I submitted mine the second week and got great feedback. I was able to get multiple rounds of feedback on all my sessions.</li><li>Try OneStartlingSentence as a way to write the first paragraph of the abstract. You can always write more paragraphs if you have room. This will allow you to grab the reviewers.&nbsp;</li><li>If you have a chance to be a reviewer for that conference (or any other conference), grab that chance. You will learn from your reviewing. You will also grow your network, which is a great thing.<br /></li></ol><br />One thing I can guarantee. <a href="http://agile2013.agilealliance.org/">Agile 2013</a> will be great. At least, the two stages I'm reviewing will be great :-) Not because I'm reviewing them, but because the *teams* of reviewers is doing such a great job. I suspect the other teams are also doing a great job. <br /><br />Ok, back to my other work and more reviews.<br />

<div style="margin-top:10px;height:15px" class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://www.zemanta.com/?px" title="Enhanced by Zemanta"><img style="border:none;float:right" class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=53acaadb-36ec-41f6-9912-6a03aaa8cfbe" alt="Enhanced by Zemanta" /></a></div>]]></description>
            <link>http://www.itjoblog.co.uk/2013/03/an-interim-personal-retrospect.html</link>
            <guid>http://www.itjoblog.co.uk/2013/03/an-interim-personal-retrospect.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">Agile</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Editing</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Feedback</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Learning</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Review</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Writing</category>
            
            <pubDate>Mon, 18 Mar 2013 09:22:47 +0000</pubDate>
        </item>
        
        <item>
            <title>Why Marissa Meyer is right to rein in employees</title>
            <description><![CDATA[<div>Marissa Mayer has stirred up a storm this week. People - including business leaders - have criticised the Yahoo CEO for <a href="http://www.virgin.com/richard-branson/blog/give-people-the-freedom-of-where-to-work">calling employees back into the office</a> - but she's resolute.&nbsp;</div><div><br /></div><div>Remote working has been a mantra for tech companies for years now. An awful lot of them sell you the means to do it, either by flogging you tablet devices and smart phones, or by running cutting-edge high-speed commnunications networks, or by developing software that you can use from anywhere in the world. Mobility is the tech world's mantra. So why would a tech firm turn its back on the idea?</div><div><br /></div><div>Insiders suggest that <a href="http://allthingsd.com/20130222/physically-together-heres-the-internal-yahoo-no-work-from-home-memo-which-extends-beyond-remote-workers/">Yahoo's remote workforce was spinning out of control</a>, with workers routinely hiding, and in some cases practically forgetting that they worked for the firm.</div><div><br /></div><div>But this doesn't fit with the prevailing rhetoric around remote working. Studies have found remote workers to be more engaged, rather than less. This <a href="http://blogs.hbr.org/cs/2012/08/are_you_taking_your_people_for.html">Harvard Business Review post</a> argues that being close to someone geographically can make you complacent, whereas people who are further apart from each other will often try harder to connect, while using collaboration tools more intelligently.&nbsp;</div><div><br /></div><div><a href="http://www.econ.brown.edu/econ/events/bloom.pdf">Stanford researchers found</a> last year that Chinese workers who worked from home performed an eighth better on average than their office-bound counterparts. That's a significant enough difference that management types should sit up and take notice.&nbsp;</div><div><br /></div><div>But the management types are probably the issue. It can be difficult to keep people accountable when they're working remotely. It takes a certain management maturity to keep track of what everyone is doing even when they're not in the office. Mid-level managers have to understand how to set goals to accomodate remote working, rather than simply relying on time-based billing.</div><div><br /></div><div>If a company lets remote working practices run away from it without keeping its eye on these management goals, then it risks plummeting productivity, a lack of cohesion, and, ultimately, a loss of identity. Things will fall apart. The centre will not hold.</div><div><br /></div><div>More than that, employees need to feel an emotional affiliation with their employer to be self-motivated. They need to feel as though they're working for an organisation that's going somewhere, and that has a solid vision. They will want an organisation that they can get behind. That's something that Yahoo lacked for a long time, and which was <a href="http://allthingsd.com/20111026/no-to-yess-yahoo-employee-satisfaction-survey-shows-morale-morass/">already affecting employee morale</a>.</div><div><br /></div><div>So perhaps Meyer is doing the right thing, in spite of employee whinging. She's taking a legacy of many disaffected, listless employees, and sifting the wheat from the chaff. Once she's completed that task, and the hangers-on have resigned of their own accord without incurring an expensive redundancy package, she can focus on building up a cohesive culture with those who are left - and then open up remote working and collaboration again, on her terms.&nbsp;</div><div><br /></div><div>Smart move, I'd say.</div>]]></description>
            <link>http://www.itjoblog.co.uk/2013/02/marissa-meyer-employees.html</link>
            <guid>http://www.itjoblog.co.uk/2013/02/marissa-meyer-employees.html</guid>
            
            
            <pubDate>Thu, 28 Feb 2013 17:00:00 +0000</pubDate>
        </item>
        
        <item>
            <title>How life emulates code</title>
            <description><![CDATA[<div>I'm starting to code again.&nbsp;</div><div><br /></div><div>I hadn't typed a variable name or defined an object in years, but the other week, I remembered how much I loved it. I used to code in PHP, but this time, I sparked up a Linux VM and started to learn Python. I hadn't even entered a BASH command for a while, so I'm relearning everything from the beginning.&nbsp;</div><div><br /></div><div>I found myself painfully tapping commands into the&nbsp;<a href="http://www.geany.org/">Geany</a>&nbsp;graphical editor, saving .PY scripts, and running them to see what happened, only to get the inevitable syntax errors and warnings. For the inexperienced, coding is a frustrating series of stops and starts, like turning over an engine that doesn't want to go.&nbsp;</div><div><br /></div><div>It's delightful too, when a script finally sputters to life and does what you wanted. Mine processed an HTML file, finding domain names and converting them to IP addresses. When it was finished, it ran smoothly, churning out hundreds of lines of beautifully formatted results and saving them off to another file.</div><div><br /></div><div>It ran smoothly, but it used far too much fuel. The best way to learn a language is to go over what you've just done and try to make it more elegant. I began refining it, looking for better commands to do more with fewer lines.&nbsp;</div><div><br /></div><div>I gradually reduced the code, like a good sauce, consolidating commands, replacing five instructions where one carefully thought-out one would do. Any good programmer's ultimate goal isn't just to do something, but to do it well. There is such a thing as beautiful code - although mine will still be ugly for a while to come.&nbsp;</div><div><br /></div><div>That's ok. Writing embarrassingly bad Python scripts is a hobby. Lord knows, no one would pay me for it, and most people are far better at it.&nbsp;</div><div><br /></div><div>Luckily, writing posts like this is my day job. That relies on 'real' language, with a far more forgiving syntax. But as the Python interpreter kept telling me where I'd gone wrong, I realised that software code and real life language are intimately linked.</div><div><br /></div><div>We build our realities through language. The agreements that we declare with people - our loved ones, our clients, our business partners, and ourselves - dictate what comes next. A poorly-worded or incomplete communication leaves things open to interpretation, and often leaves people with the wrong idea.</div><div><br /></div><div>What happens then? Arguments develop. Feelings get hurt. People are left with different expectations, which can be explosive further down the line. I've had business partnerships - and the friendships underpinning them - collapse because I didn't know enough to code them properly. We have to code our lives properly. We have to make every word of our language count.</div><div><br /></div><div>So, what does proper coding look like when we communicate with each other, rather than with a software engine? It means being clear, concise, and - to quote&nbsp;<a href="http://www.amazon.co.uk/Four-Agreements-Practical-Personal-Freedom/dp/1878424319">Don Miguel Ruiz</a>&nbsp;- impeccable with your word. That last part is important. Being impeccable with your word involves using positive language to describe the way you want things to be, rather than negative language that sets you up for failure. It also means following through with your stated intentions. People respect others who explain exactly what they're going to do, and why, and then do what they say.&nbsp;</div><div><br /></div><div>Being impeccable with your word requires a careful, elegant use of language. Using language as a tool requires that we keep it sharply honed. Just because the syntax of the English language is broader than our software languages doesn't mean that we shouldn't be measured, elegant, and deft with our words. Wasting less time and energy on expletives and cliches lets us concentrate on meaning and structure. It enables us to better program our world, and our place within it. &nbsp;&nbsp;</div><div><br /></div><div>French mathematician Blaise Pascal summed it up best in a letter he once wrote: "I have made this longer than usual," he said, "because I have not had time to make it shorter."</div><div><br /></div><div>Smart chap. No wonder they named a programming language after him.</div>

<div style="margin-top:10px;height:15px" class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://www.zemanta.com/?px" title="Enhanced by Zemanta"><img style="border:none;float:right" class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=c38689aa-ec0b-4c7a-8acf-2b9b6f8fe29e" alt="Enhanced by Zemanta" /></a></div>]]></description>
            <link>http://www.itjoblog.co.uk/2013/02/how-life-emulates-code.html</link>
            <guid>http://www.itjoblog.co.uk/2013/02/how-life-emulates-code.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">Blaise Pascal</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Programming</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Programming language</category>
            
            <pubDate>Mon, 25 Feb 2013 09:00:00 +0000</pubDate>
        </item>
        
        <item>
            <title>Who is responsible when developers screw up security?</title>
            <description><![CDATA[






<!--[if gte mso 9]><xml>
 <o:DocumentProperties>
  <o:Revision>0</o:Revision>
  <o:TotalTime>0</o:TotalTime>
  <o:Pages>1</o:Pages>
  <o:Words>404</o:Words>
  <o:Characters>2305</o:Characters>
  <o:Company>Word Herder Media Services</o:Company>
  <o:Lines>19</o:Lines>
  <o:Paragraphs>5</o:Paragraphs>
  <o:CharactersWithSpaces>2704</o:CharactersWithSpaces>
  <o:Version>14.0</o:Version>
 </o:DocumentProperties>
 <o:OfficeDocumentSettings>
  <o:AllowPNG/>
 </o:OfficeDocumentSettings>
</xml><![endif]-->

<!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:TrackMoves/>
  <w:TrackFormatting/>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>EN-US</w:LidThemeOther>
  <w:LidThemeAsian>JA</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:SplitPgBreakAndParaMark/>
   <w:EnableOpenTypeKerning/>
   <w:DontFlipMirrorIndents/>
   <w:OverrideTableStyleHps/>
   <w:UseFELayout/>
  </w:Compatibility>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="&#45;-"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="276">
  <w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]-->

<!--[if gte mso 10]>
<style>
 /* Style Definitions */
table.MsoNormalTable
	{mso-style-name:"Table Normal";
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-priority:99;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:12.0pt;
	font-family:Cambria;
	mso-ascii-font-family:Cambria;
	mso-ascii-theme-font:minor-latin;
	mso-hansi-font-family:Cambria;
	mso-hansi-theme-font:minor-latin;}
</style>
<![endif]-->



<!--StartFragment-->

<p class="MsoNormal">January was a dark month for Github. The collaborative
source code management site was found to be sharing the private SSH keys of
many members via its public search function.</p>

<p class="MsoNormal">The website, which helps programmers in far-flung locations
to collaborate with each other, had just upgraded its search function with many
new features. However, this caused several enterprising hackers to take another
look at its search functionality.</p>

<p class="MsoNormal">Git hub works using a series of repositories. These are
folders that hold the source code for software that a developer is working on
as part of a collaborative project. A private repository on a developer's own
machine is replicated with a public one on the Git hub site, enabling that
developer to work on their own version of a piece of source code, before it is
then incorporated into the main source code along with everyone else's changes.</p>

<p class="MsoNormal">Unfortunately, it turns out that many developers are not
very conscientious when it comes to security. They copied over the entire
contents of their UNIX machines' home directories into their private
repositories, which were then copied up to the public folders. By default, UNIX
stores SSH keys in the home folder.</p>

<p class="MsoNormal">SSH is a certificate system designed to make it easier to
access remote computing services without continually re-entering passwords.
When a user generates SSH keys on their own computers (which can be done with a
single command line instruction), it creates a private and public key. The
public key can be given to servers that the user wants to access transparently
via different tools on their computer. The private key is supposed to stay with
them, and never be distributed.&nbsp;</p><p class="MsoNormal">If these private keys are made public, then an
attacker has the keys to the kingdom, because they can access any online
services that the user is logging into. What makes it worse is that the user's
computer also keeps a list of these services on their machine in a 'known hosts' file.</p>

<p class="MsoNormal">So, until Github recognised what was happening, links to people's private SSH keys were popping up in its
search results. This could have had far reaching ramifications. Developers'
machines may already have been compromised without their knowledge. Their
Github accounts could have been accessed, and malicious backdoor code could
even have been inserted into their project code.</p>

<p class="MsoNormal">But who was at fault here? Was it Github, for making the
search results available, or was it the developers themselves, for not
understanding security well enough to protect their own private keys?</p>

<p class="MsoNormal">And if developers are making rookie security mistakes such
as this, how much should we be trusting them to produce secure software?<o:p></o:p></p>

<!--EndFragment-->]]></description>
            <link>http://www.itjoblog.co.uk/2013/02/security.html</link>
            <guid>http://www.itjoblog.co.uk/2013/02/security.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">IT security</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Security Skills</category>
            
            <pubDate>Tue, 19 Feb 2013 10:00:00 +0000</pubDate>
        </item>
        
        <item>
            <title>Better software development: the human factor, or how often are you interrupted?</title>
            <description><![CDATA[<p>Developer conferences are a great way to re-energise yourself and your work with new ideas, partly thanks to the content from the front, and partly because you get to engage with other developers. Technology changes constantly; but if I reflect on events I have attended I notice some common themes. Occasionally there are compelling technical insights - I think of the first time I heard Ryan Dahl describe the thinking behind Node.js, for example - but more often the most acclaimed talks are not about technology as such. Rather, they are about how we work together: communication, and simple truths about human nature.</p>
<p>This proved the case again at the <a href="http://monkigras.com/">Monki Gras</a> recently, an unusual London event run by analysts Redmonk. </p>
<p>Craig Kersteins and Matt Thompson from Heroku asked a question: how often are you interrupted at work? Software development is partly about keeping a lot of information in your head so that you can see patterns and make connections, and avoid bugs by remembering exactly how the code you are working on fits into the application. Getting a summons to a meeting or a call from a colleague in the midst of that kind of concentration is costly. They even put a figure on it. 76% of the worst-performing engineers are frequently interrupted, they said.</p>
<p>How often is frequent? That was not stated; but they did suggest aiming for 4 hours of uninterrupted work each day. That still leaves plenty of time for meetings; and I have little doubt that 4 hours of good work counts for more than 8 hours of choppy work that leaves you feeling that you should not have bothered to turn up.</p>
<p>More human factors: Mazz Mosley and Nick Stenning from the UK Government Digital Service&nbsp;advised us not to recruit "rock star" developers who become a single point of failure, as everything stops if they become unavailable. A team with collective intelligence is better.</p>
<p>Ted Nyman from GitHub weighed into managers. They do not have any. I was reminded of a comment from Joyent's Bryan Cantrill at Monki Gras 2012: "it is very hard for middle management to add value".</p>
<p>Do I think that most companies remove all their managers? That is neither realistic nor likely to succeed. As another attendee observed, companies with managers generate a lot of revenue.</p>
<p>The point though is this: the way developers are managed impacts their productivity. That human factor matters more than whether they use Java or C#, or which tools they use.</p>
<p>I hear similar insights from the <a href="http://qconlondon.com/">QCon</a> conference in London each year. Coming up in March and recommended. </p>
<p>Shanley Kane from Basho spoke about honesty in software development. Roadmaps are a lie, she claims, because attempts to map features to a timeline will always fail. When roadmaps fail that erodes trust in the team. Interactive "what we're working on" documents work better, she said.</p>
<p>I will leave the last word to Cyndi Mitchell from Logscape and Thoughtworks, who remarked at Monki Gras that "Software is fundamentally a human, interactive activity. If you don't understand that, forget it."<br /></p>]]></description>
            <link>http://www.itjoblog.co.uk/2013/02/better-software-development.html</link>
            <guid>http://www.itjoblog.co.uk/2013/02/better-software-development.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Agile</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">Working Life</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">conferences</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">development</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">monkigras</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">qcon</category>
            
            <pubDate>Mon, 11 Feb 2013 09:05:41 +0000</pubDate>
        </item>
        
        <item>
            <title>When outsourcing goes too far</title>
            <description><![CDATA[







<p class="p1">Ready to outsource your development job to China? One guy was doing it for months, and only got caught because he was lazy.</p>
<p class="p1">Verizon's security team just <a href="http://securityblog.verizonbusiness.com/2013/01/14/case-study-pro-active-log-review-might-be-a-good-idea/">released</a> a bizarre case study, describing a company that approached it after seeing some strange network traffic. It was experiencing a VPN connection from China, for no reason, which often stayed up for a day at a time. Even weirder was the fact that the person at the other end of the VPN connection was using two-factor authentication to check into the account.</p>
<p class="p1">While investigating the problem, the security team decided to trawl the hard drive of the account's legitimate owner, an employee inside the company. They were looking for malware that may have been planted by an attack. Instead, they found dozens of invoices from Shenyang, China. It turned out that the employee, a software developer for the company, had been outsourcing pretty much all of his job to low-cost labour on the other side of the Pacific. They were able to access the system because he had Fedexed his RSA token to them.&nbsp;</p>
<p class="p1">The developer, who was paid a six-figure salary, was paying a fifth of what he earned to the overseas contractor. That's smart if you're someone who wants to get your job done for your while still earning a hefty salary. It's smart if you don't care about ethics, or security, or the wellbeing of your employer or the broader community that they serve.&nbsp;</p><p class="p1">It's also incredibly insecure. Many security attacks have <a href="http://www.infosecurity-magazine.com/view/26522/the-us-vs-china-a-very-civil-cyber-war/">been documented as coming from China</a>. If someone else is accessing your systems and writing your code, then they will also have carte blanche access to your infrastructure, and potentially elements of the infrastructure beyond. This company was also part of the critical national infrastructure, said Verizon. Suddenly, stories of <a href="http://business.financialpost.com/2013/01/03/cyberattack-threat-in-canadas-oil-patch-raises-risk-of-disruptions-stolen-data/">cyberattacks on oil and gas infrastructure</a>&nbsp;and<a href="http://online.wsj.com/article/SB123914805204099085.html"> malware planted in the electricity grid</a> seem far more plausible.&nbsp;&nbsp;</p>
<p class="p1">What's irritating isn't just the guy's irresponsible actions; it's the fact that he wasn't even doing anything productive with his time. The Verizon team's blog on the subject outlined his average day thus:</p>
<p class="p1">9:00 a.m. - Arrive and surf Reddit for a couple of hours. Watch cat videos</p>
<p class="p1">11:30 a.m. - Take lunch</p>
<p class="p1">1:00 p.m. - Ebay time.</p>
<p class="p1">2:00 - ish p.m Facebook updates - LinkedIn</p>
<p class="p1">4:30 p.m. - End of day update e-mail to management (ironically, he got consistently excellent performance reports).&nbsp;</p>
<p class="p1">5:00 p.m. - Go home</p>
<p class="p1">He was also lazy enough to have the Chinese works connect directly with their VPN, rather than running a proxy at his house and having them connect to it first. That's what got him caught - thankfully for the company concerned, which presumably would now want to audit its internal network and pull a full static analysis of its code, to see if there are any security holes.</p>
<p class="p1">This is the darker side of the extraction theory proposed in Tim Ferris's book <i><a href="http://www.fourhourworkweek.com/">The Four Hour Work Week</a></i>. In that book, he advocates distancing yourself from your company and working from home where possible, so that you can be more efficient with your time and start your own lifestyle business. He also suggests using a virtual assistant to take on mundane tasks. It seems our enterprising developer skipped the lifestyle business part, and just got someone else to do his job.&nbsp;</p>
<p class="p1">Or perhaps this was his version of a lifestyle business. The Verizon team said that evidence suggests he was pulling the same scam in multiple companies.</p><p class="p1">There are most certainly things you can do to make your job easier as a sysadmin or software developer. I know of one tech expert who took a job as a sysadmin for a US company, demanded to work from home, and then scripted 80% of his tasks. His job ran smoothly, there were no security risks, and he was free to get on with other things. But that takes real smarts.&nbsp;</p>
<p class="p1">Lessons learned here? For companies: watch your system logs more closely (this had been going on for over six months). For employees: sure, work efficiently, do what you can to automate your job and make it easier - but never, ever step away from your work ethic or basic trustworthiness.</p>
<p class="p2"><br /></p>]]></description>
            <link>http://www.itjoblog.co.uk/2013/01/when-outsourcing-goes-too-far.html</link>
            <guid>http://www.itjoblog.co.uk/2013/01/when-outsourcing-goes-too-far.html</guid>
            
            
            <pubDate>Mon, 28 Jan 2013 10:17:36 +0000</pubDate>
        </item>
        
        <item>
            <title>Should BlackBerry 10 development be in your plans?</title>
            <description><![CDATA[<p>Could 2013 be the year that RIM recovers and BlackBerry becomes an important mobile platform again? January 30th is the key day, when the new BlackBerry 10 smartphone platform is launched.</p>
<p><img src="http://www.itjoblog.co.uk/bb-simulator.png" height="365" width="226" /></p>
<p>We have seen a kind of preview of BlackBerry 10 in the unsuccessful PlayBook tablet, released in April 2011. This is the first RIM product based on the QNX operating system. QNX Software Systems was acquired by RIM a year earlier, in April 2010. That said, the PlayBook runs the PlayBook OS, not (yet) BlackBerry 10. BlackBerry 10 SmartPhones will have a new user interface and many new features.</p>
<p>I spoke to William Vablais, Head of Developer Relations EMEA for RIM. "We've been very successful in changing the sentiment of developers," he claims. "The interest level has been rising significantly."</p>
<p>One would expect him to say nothing less. But what is distinctive about the BlackBerry 10 platform; what does the it give you that couldn't easily be done on iOS, Android or something else?</p>
<p>Vablais points first to the diversity of development approaches it supports.</p>
<p>"We have SDKs for C/C++, we have entry points for designers and developers for HTML and CSS, we have entry points for Adobe AIR," he says. </p>
<p>There is also an Android runtime which makes it possible to repackage Android apps. Vablais observes that it can pay to offer your app on a minority platform.</p>
<p>"There's a community out there that developed for Android who don't have any exposure or visibility in that world because it's such an overcrowded market," he says. "They can take their application, port it to our platform, and suddenly they get visibility, generating revenue."</p>
<p>Fair enough, but what does the BlackBerry 10 platform give you that cannot easily be done on some other platform?</p>
<p>Vablais points to two key BlackBerry 10 features that he believes will draw users to the platform. One is social netwok integration. "We have the social network capabilities built into the OS," he says, referring to BlackBerry Flow and BlackBerry Hub:</p>
<blockquote style="MARGIN-RIGHT: 0px" dir="ltr">
<p>BlackBerry® Flow is a new user experience that allows seamless navigation across open applications and the BlackBerry® Hub. All messages, notifications, feeds, and calendar events come into the BlackBerry Hub and no matter what the user is doing with the device, with a simple gesture, they can peek into the Hub at any time.</p></blockquote>
<p>says the <a href="http://press.rim.com/newsroom/press/2012/blackberry-10-launch-event-to-be-held-on-january-30th-2013.htm">press release</a>,</p>
<p>More important to business users though is security. "What no-one else has is that the OS and the framework has been based on security. The user interface and some of the components allow you to split out work related data from your personal related data."</p>
<p>This is the feature called BlackBerry Balance. Again, here is the official description:</p>
<blockquote style="MARGIN-RIGHT: 0px" dir="ltr">
<p>BlackBerry® Balance™ offers the most elegant way to satisfy both customer and corporate needs without compromising on either. With BlackBerry Balance, personal apps and information are kept separate from work data, and the customer can switch from their personal to work profile with a simple gesture.&nbsp; The work profile is fully encrypted and secure, enabling organizations to protect their content and applications, while at the same time letting customers get the most out of their smartphone for their personal use.</p></blockquote>
<p>In the era of BYOD (Bring Your Own Device), this does sound like a great feature. The industry is only just coming to terms with the idea that smart devices are personal; they do not live in the office and they will be used as home as well as at work. If BlackBerry 10 makes sense of maintaining work and personal data on a single device without compromising security or the user experience, then it could indeed be a game changer.</p>
<p>The success of the original BlackBerry phones was primarily based on its appeal to business users, and RIM already has tools for deploying internal apps in a managed and secure manner.</p>
<p>Even an excellent platform counts for nothing if you cannot market it successfully in a world now dominated by iOS and Android, as Microsoft has discovered with Windows Phone. Whether RIM has enough resources to establish yet another mobile ecosystem must be an open question.</p>
<p>At the same time, there is a lot to like. QNX has long been an excellent embedded operating system, and if the devices are excellent and the security lives up to its promise, BlackBerry 10 could be a significant platform for mobile buisiness apps.</p>
<p>Mark January 30th in your diaries and watch with interest.<br />&nbsp;<br /></p>]]></description>
            <link>http://www.itjoblog.co.uk/2012/12/blackberry-10-development.html</link>
            <guid>http://www.itjoblog.co.uk/2012/12/blackberry-10-development.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Mobile</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">Skills</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">blackberry</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">mobile</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">rim</category>
            
            <pubDate>Fri, 21 Dec 2012 11:11:00 +0000</pubDate>
        </item>
        
        <item>
            <title>Do we live in a &apos;brogramming&apos; culture?</title>
            <description><![CDATA[<div>Do we live in a 'brogramming' culture? A few weeks ago, a row <a href="http://www.theregister.co.uk/2012/11/20/british_ruby_conference_cancelled_after_diversity_row/">exploded</a> over the cancelling of a UK Ruby programming conference, Britruby. The lineup for the Manchester-based conference was criticised by another conference organiser for its 100% white male lineup. The online discussion quickly escalated, resulting the cancellation of the conference, for what the organiser said were financial reasons.</div><div><br /></div><div>The whole affair left many disappointed, and regretful, and it also raised a simple question: should the organisers have included a specific mandate to invite a percentage of women and people of colour to speak at the conference? There are some noted Ruby programmers who fall outside the white male category after all.&nbsp;</div><div><br /></div><div><a href="http://devblog.avdi.org/2012/11/19/on-britruby/">This blog post </a>from Avdi Grimm, a speaker scheduled to speak at the conference, suggests that the people he asks who are not white or male were not invited.</div><div><br /></div><div>Grimm also attended at least one other conference with a diverse set of speakers.</div><div><br /></div><div>"Does encouraging diversity actually make a difference to the quality of a conference?" he asks. "My answer, based on that experience, is oh hell yes."</div><div><br /></div><div>The signs are that we need diversity in our skill set when it comes to programming. The European Commission <a href="http://www.theinformationdaily.com/2012/03/21/e-skills-week-2012-there-is-a-job-waiting-for-you">says</a> that Europe will have a skills gap of up to 700,000 professionals within the next two years.&nbsp;</div><div><br /></div><div>And yet, in the UK, we're training relatively few women in IT. According to statistics from the UK's Higher Education Statistics Agency, 3465 women received undergraduate qualifications for computer science in 2010/11. 4.5 times as many males qualified.</div><div><br /></div><div>Encouraging more women into undergraduate computer courses could help by bumping up numbers, but that's also going to take considerable time. There's also evidence that traditional academic courses aren't necessarily producing the kinds of skills necessary to excel at IT jobs in the real world.</div><div><br /></div><div>Can we short-circuit the process, encouraging under-represented groups into IT jobs even when a person doesn't have an academic record in the sciences?</div><div><br /></div><div>The <a href="http://www.hackbrightacademy.com/">Hackbright Academy</a> thinks so. It is offering a relatively short, ten-week programming course exclusively for women to help introduce more gender balance into computing. Women learn a range of solid computing topics including Python, Git and source control, SQL, and front-end web subjects including HTML, CSS, Ajax and WebSockets.</div><div><br /></div><div>Becoming an expert in these technologies in ten weeks is a tall order, but it could give women who haven't been involved in IT enough of a grounding to at least secure a commercial job where they could develop a subset of those skills further - and graduates from the course are already getting hired.</div><div><br /></div><div>Could an active policy of diversity in IT professionals, combined with short, sharp kickstarter courses in specific skills, help to redress some of the skills shortages in IT?</div>]]></description>
            <link>http://www.itjoblog.co.uk/2012/12/brogramming-culture.html</link>
            <guid>http://www.itjoblog.co.uk/2012/12/brogramming-culture.html</guid>
            
            
            <pubDate>Mon, 10 Dec 2012 05:13:32 +0000</pubDate>
        </item>
        
        <item>
            <title>What Does Done Mean For Your Team?</title>
            <description><![CDATA[In agile projects, we talk a lot about "done." Some teams talk about done, or done-done, or done-done-done. To me, that's confusing. I have one definition of done, and that's release-able. When we use done as release-able, I know what the feature is when someone marks it as done when it's moved across the board during the iteration.<br /><br />But if you are in the midst of your transition to agile, you might not be there yet. You might have legacy code with tons of technical debt, and you don't know if the changes you have made are safe. What do you do then? <br /><br /><ol><li>Define your team norms. I like my definition. No surprise there! But if you don't have a cross-functional team that includes testers, and you are writing your own automation, decide what you are going to call done for your team.</li><li>Write your own automated tests and decide what level they will be at. If you are a developer, you need to write automated unit tests. If you have no testers on your team, someone has to write system level tests. Or, something that looks like system level tests. <br /></li><li>Consider swarming around each feature as a team, so every person chooses a role for each feature. Trade off roles for a given feature, so you all share the love of writing code and tests equally. This is especially good if you have technical debt and you have to pay it off. If you know you have a feature that will touch on an area of large technical debt, the swarming will allow to work as a team to address the debt and pay some of it off.</li><li>If you don't have testers on your team, make sure you raise this as an impediment and have some management person address this. Remember, agile teams are cross-functional teams. Yes, people can play other roles, but if you are not, by nature, a great tester, it will show in the product.&nbsp;</li></ol><p>If, for some reason, you have a handoff to another group before the product can be released, step back and examine why. It's not a crime, but it does create another step. Is there a good reason for that step? If so, consider ways to integrate that step into your work. Is there a way to integrate? <br /></p><p>The more you integrate all the work for a feature into your cross-functional team, the more agile you will be. That is, the more able you are to release an increment of product, get feedback, and accept change. And, that's the point of your definition of done.</p><p>So, when you think about done, think about a definition of done that works for your team and your environment. And, if your definition of done is not release-able, re-examine your definition every so often to see if it is still working for you. Maybe things have changed.<br /></p>

<div style="margin-top:10px;height:15px" class="zemanta-pixie"><a class="zemanta-pixie-a" href="http://www.zemanta.com/?px" title="Enhanced by Zemanta"><img style="border:none;float:right" class="zemanta-pixie-img" src="http://img.zemanta.com/zemified_e.png?x-id=326c48df-bcf1-4c31-b61d-6b9dcee786c4" alt="Enhanced by Zemanta" /></a></div>



]]></description>
            <link>http://www.itjoblog.co.uk/2012/11/what-does-done-mean-for-your-team.html</link>
            <guid>http://www.itjoblog.co.uk/2012/11/what-does-done-mean-for-your-team.html</guid>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">Agile software development</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Legacy code</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">Project management</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">done</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">technical debt</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">transition to agile</category>
            
            <pubDate>Fri, 30 Nov 2012 15:45:43 +0000</pubDate>
        </item>
        
        <item>
            <title>How to learn new programming skills online</title>
            <description><![CDATA[







<p class="p1">Back when I was a nipper, learning how to program was a painful experience. At home, I would labour over 68000 assembly language trying to program sprites. At school, I laboured under the pitiless Mr Eales, who tried unsuccessfully to indoctrinate me in the dark art of LOGO running on a BBC Micro, in his own inimitable brand of sadism.</p>
<p class="p1">These days, learning to program needn't be quite so painful. A rising tide of online programming schools is making it easier for people to learn the basics of any language, and take things further, gaining a respectable, useful knowledge. They vary in format, running the gamut between interactive and simply informative. Here are a few to whet your appetite.</p>
<p class="p1"><b><a href="http://www.codecademy.com/">Codecademy</a></b></p>
<p class="p1">This site provides interactive browser-based lessons, explaining the basics of programming and explaining what to type and where, so that you can get a solid idea of programming rules and structures.</p>
<p class="p1"><b><a href="http://www.udacity.com/">Udacity</a></b></p>
<p class="p1">This higher education site covers a range of beginner, intermediate, and advanced courses. It is broader than Codecademy, covering physics and statistics in addition to meaty programming topics such as how to build a web browser, and HTML 5 games development.</p>
<p class="p1"><b><a href="http://www.codeschool.com/">Code School</a></b></p>
<p class="p1">Code School offers a variety of in-browser programming courses covering Ruby, Git, CSS, and jQuery among others. Some of the courses are free, while some cost money. The service is aimed at both individuals and teams, the latter of which can be monitored by a manager. Code School also runs a couple of other sites: a free Interactive Ruby tutorial called <a href="http://tryruby.org/">TryRuby</a>, and an applied, tongue in cheek Rails course called <a href="http://railsforzombies.org/">Rails for Zombies</a>.</p>
<p class="p1"><b><a href="http://teamtreehouse.com/">Treehouse</a></b></p>
<p class="p1">Aimed at new and experienced developers, Treehouse has two plans: Silver, at $25 per month, and Gold, at $49 per month. Both give you access to over 700 videos, but the premium plan includes access to interviews with industry pros, project feedback, and new ideas to inspire your programming skills. Like the other sites, it enables you to learn by doing, rather than simply watching the videos. If you are into iOS or Android development, Treehouse has special tracks for these.</p>
<p class="p1"><b><a href="http://www.oreillyschool.com/courses/">O'Reilly</a></b></p>
<p class="p1">I'd be remiss not to mention this heavy hitter, which offers a range of novice, intermediate, and advanced courses covering everything from an introduction to C programming through to database administration, PHP, and Java. The price for these courses is a little steep, though; even a basic introduction to JavaScript will set you back $450.</p>
<p class="p1"><b><a href="http://www.lynda.com/">Lynda.com</a></b></p>
<p class="p1">Lynda.com is heavily video based. Instead of providing in-browser interactive coding tutorials, it provides videos to watch, along with exercise files to play along with using your own software. This approach stems from its breadth of courses. Detailed programming tutorials for Java, Perl, ASP.net, and Ruby nestle alongside other courses ranging from negotiating your salary through to advanced photo shop CS5 tutorials. There is something for tech-heads of all kinds here. The site had 187 courses designed for developers at last look.</p>
<p class="p1"><b>Google</b></p>
<p class="p1">Yes, <a href="http://www.giyf.com/">Google is your friend</a>, but I'm not fobbing you off by asking you to search for 'Python courses online'. Google runs the <a href="https://code.google.com/edu/">Google Code University</a>, which contains a variety of educational materials covering programming, web security, Android, and distributed systems. Materials are scattered and noninteractive, but they can be useful pointers. The University offers discrete classes in <a href="https://code.google.com/edu/languages/google-python-class/index.html">Python</a> and <a href="https://code.google.com/edu/languages/cpp/basics/index.html">C++</a>, along with online coding exercises. These classes aren't designed for glitz and glamour, but they are instructive for the already technically adept who want to extend their range.</p>
<p class="p1"><b><a href="https://www.coursera.org/">Coursera</a></b></p>
<p class="p1">This site features courseware from a range of universities including Stamford, Princeton, and the University of Toronto. There are some applied practical courses, such as Functional Programming Principles in Scala, with specific programming exercises. Some courses, such as Introduction to Databases, are self-study, meaning that all of the online videos and materials are available at once. Others are released at a pace set by the University, and result in a certificate.</p>
<p class="p1">Some of these courses are more intensive than others, and aimed at a higher level, but that's one of the great things about learning online; there is something for people at every stage of knowledge.&nbsp;</p><p class="p1">Of course, the gap in most of these online courses is real world experience. Learning how to code in a browser is one thing, but applying that in a commercial environment, which will have its own restraints and requirements, will present its own challenges. Still, in many ways it beats teaching yourself out of a book. And given that many of these are entirely free, or at least offer a free trial, it's worth a go.</p><p class="p1">Maybe I'll even have the confidence to try. Mr Eales told me that I was going to fail my A-levels, but I still turned out with a respectable B. So there. Not that I'm bitter, or anything.</p>]]></description>
            <link>http://www.itjoblog.co.uk/2012/11/learning-new-programming-skills.html</link>
            <guid>http://www.itjoblog.co.uk/2012/11/learning-new-programming-skills.html</guid>
            
            
            <pubDate>Tue, 27 Nov 2012 08:30:00 +0000</pubDate>
        </item>
        
        <item>
            <title>Adopt or Abort/Retry/Fail: what is the business impact of Windows 8?</title>
            <description><![CDATA[<p>Microsoft launched Windows 8 late last month, to a storm of controversy and uncertain initial sales. What is going on with Windows and should you care about Windows 8?</p><a onclick="window.open('http://www.itjoblog.co.uk/assets_c/2012/11/joblogwin8-177.html','popup','width=1136,height=565,scrollbars=no,resizable=no,toolbar=no,directories=no,location=no,menubar=no,status=no,left=0,top=0'); return false" href="http://www.itjoblog.co.uk/assets_c/2012/11/joblogwin8-177.html"><img class="mt-image-none" alt="joblogwin8.png" src="http://www.itjoblog.co.uk/assets_c/2012/11/joblogwin8-thumb-400x198-177.png" width="400" height="198" /></a> 
<p>The controversy comes as no surprise to anyone who has been paying attention. Windows 8 is two operating systems in one. </p>
<p>On the desktop side it is a slightly upgraded Windows 7: slightly faster and quicker to boot, revamped File Explorer, better Copy function, improved Task Manager, Hyper-V virtualisation, and a few other things, though a little less pretty thanks to the removal of the transparent Aero theme in favour of a plainer appearance.</p>
<p>These are nice improvements, but the real innovation is in the new Windows Runtime platform, in which apps are sandboxed, support touch control, run full screen, and are easily installed from the Windows Store or by distributing an application package, which is called sideloading. Sideloading is mainly restricted to developers or enterprise deployments.<br />Microsoft ensured that the tablet personality would not be ignored by replacing the Start menu with the Start screen, a new-style app. This also ensured that newcomers to Windows 8 would find it unfamiliar and difficult to navigate. </p>
<p>Another contentious issue is that Windows Runtimes apps - officially called Windows Store apps - look stupidly large and bold on large desktop displays and do not work at all across multiple monitors.</p>
<p>Underlying Windows 8, especially in the new tablet personality, is a design concept with a couple of notable features. One is "content before chrome", the idea that content rather than screen furniture should be foremost. This has led Microsoft to have many essential controls hidden by default; you have to right-click or swipe to see them. You can see the point, but unfortunately this is bad for learnability.</p>
<p>Another is a grid layout, giving rise to the tiled appearance which characterises Windows 8. It is neat and logical, but constantly looking at boxes can be wearisome.</p>
<p>That is the preamble. What is the business impact of Windows 8? Here are a few observations.</p>
<p>One is that the learnability issues in Windows 8 are sufficient to deter upgrades, both in the consumer and business market, even though it is an improvement on Windows 7 once learned.&nbsp;Bearing in mind that the desktop improvements are relatively minor, most IT administrators will conclude that Windows 8 is not worth the hassle.</p>
<p>Therefore, we can expect only a slow uptake by businesses.</p>
<p>Against that, Windows 8 does work much better than Windows 7 on a tablet without keyboard and mouse. What if you have a project which is suited to tablet deployment, or users who simply prefer to use a tablet, does Windows 8 make sense then?</p>
<p>In many ways it does, with easy app deployment and a touch-friendly user interface - provided you stay away from the desktop side. However, it is up against Apple iPad and Google Android which are more mature as tablets, and already well understood by users. <br />The availability of Office and compatibility, in the case of the x86 version of Windows 8, with existing applications may swing it for Windows 8 in some instances, though since existing applications are generally not designed for touch control that compatibility is less useful than it first appears, if what you want is a tablet.</p>
<p>Windows 8 strikes me as a decent version 1.0 of a new tablet platform, though with some of the weaknesses that you associate with a 1.0 platform. The modern-style Mail app is poor, for example, which is surprising given how critical it is.</p>
<p>Considered as a tablet OS, Windows 8 is already usable and has plenty of potential; but the hard question is whether Microsoft is able to establish a third tablet platform at this stage in the game. The company has the money and the resources, but has struggles to engage its developer community, OEM partners or retailers to fully understand and support Windows 8. In this context, the unexpected departure of the key executive driving the platform at Microsoft, Steven Sinofsky, looks like a disaster.</p>
<p>On the developer side, Microsoft lost substantial trust and goodwill over the repositioning of .NET in Windows 8. After telling developers for a decade that .NET was the future, the company now says it is one among three equals, with C++ and HTML/JavaScript the other two. The way this was communicated, with little flow of information especially during most of 2011, left developers unsure how to plan future client applications and some simply migrated to other platforms.</p>
<p>Microsoft's biggest problem may seem nebulous, but it is real. The Windows brand is strongly associated with desktop, keyboard and mouse; the name also brings to mind unwelcome associations like forced reboots, virus warnings and troublesome setups. The new Windows 8 tablet platform is designed to escape that legacy; but changing public perception is not easy. In addition, it has to support its legacy since much of the world's business runs upon it. </p>
<p>The task of making Windows a successful tablet platform may be as hard for Microsoft as for Polaroid or Kodak trying to make the transition from film to digital; and those stories do not end well.</p>
<p>This translates to a whole lot of uncertainty, which is not what businesses want to hear.<br />Personally I like Windows 8, but its success and in particular the success of its tablet aspect is by no means assured.</p>
<p>That brings me back to the current state of play. Windows 8 is out, and it is controversial. Where is the Start menu? Why are there so few decent apps?</p>
<p>Since these issues were well flagged in advance, you would think that Microsoft was prepared for them, and ready to suffer some difficult quarters while building up the app ecosystem, working with its partners to help them with the transition, and energetically preparing service pack 1 with performance and usability fixes.</p>
<p>The alternative scenario is that Microsoft allowed itself to believe that the world would be instantly won over and when disappointed will respond with a lurch in another direction which would be fatal.</p>
<p>It is all fascinating to watch, but from a business perspective the right word is caution.<br /></p>]]></description>
            <link>http://www.itjoblog.co.uk/2012/11/business-impact-of-windows-8.html</link>
            <guid>http://www.itjoblog.co.uk/2012/11/business-impact-of-windows-8.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Rants and Raves</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">Working Life</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">android</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">apple</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">desktop</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">google</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">ipad</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">microsoft</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">mobile</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">tablet</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">windows 8</category>
            
            <pubDate>Thu, 22 Nov 2012 16:00:00 +0000</pubDate>
        </item>
        
        <item>
            <title>How mobile and social are changing the game</title>
            <description><![CDATA[<div>Thinking of developing an iPhone or Android game? Make sure you understand how social gaming works. Gaming is changing, and so are the people that games are targeting.</div><div><br /></div><div>Stories of people who produce a mobile app and cash in are exciting to listen to, but the reality is somewhat different. There are 700,000 apps in Google's Play Store, and just a little more than that in the iPhone App Store. Getting noticed above the noise is a challenge. It's a little-known fact that Rovio, the company behind Angry Birds, produced tens of games before it finally hit on a that winning series.</div><div><br /></div><div>There are at least two tricks to producing an effective mobile game. One is to create a game with a social element, so that your players become an effective marketing force. If a game improves as more people play it, then players become evangelical about it, wanting others to play it too. This is at least part of the reason why Farmville developer Zynga became so successful.</div><div><br /></div><div>Perhaps the most significant tool up a developer's sleeve, however, other than social game structures, is devops. In enterprise application development, devops is a technique to close the gap between development and operations. It takes feedback from the operations team that deploys a system, and uses it to mould the next iteration of the product. Software bugs, or even anomalies in user behaviour, can help development teams to make informed decisions about software structure and interfaces.</div><div><br /></div><div>Mobile platforms are great for this, because they can be used to collect data about how the games are being used, and what is being done in them. Users may leave the game at certain points, or make in-game purchases at crucial junctures in the game. Broadly, information can be collected about the types of game being purchased on each platform. One games developer told me recently that the winning model for her game on the Android platform was free-to-play (purchasing items in the game, rather than paying to download the game in the first place). iPhone users seemed to prefer a premium-casual model, where they could buy a full version of the game after playing a restricted version.&nbsp;</div><div><br /></div><div>All of this information can be collected in real time, as games are played, thanks to the connected nature of the platform. This presents some amazing opportunities for developers to refine their games - both at a technical level, and at a business level.</div><div><br /></div><div>The real trick for developers may be to understand how to interpret this wealth of information, understanding what is important and why, and choosing the most important elements to inform future developments. Game developers used to focus heavily on gameplay, interface design, and graphics programming. Now, analytics may be just as important.</div><div><br /></div><div>Now, in an age of mobile gaming, the emphasis may shift, and an entirely new set of analytical skill sets may be needed. It is, quite literally, a game-changing development.&nbsp;</div>]]></description>
            <link>http://www.itjoblog.co.uk/2012/10/mobile-and-social-changing-the-game.html</link>
            <guid>http://www.itjoblog.co.uk/2012/10/mobile-and-social-changing-the-game.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Mobile</category>
            
                <category domain="http://www.sixapart.com/ns/types#category">Web Technologies</category>
            
            
            <pubDate>Wed, 31 Oct 2012 09:01:23 +0000</pubDate>
        </item>
        
        <item>
            <title>How open is Windows 8? How open do you want it to be?</title>
            <description><![CDATA[<p>Microsoft is "trying to ruin the PC as an open platform", according to Markus Persson, creator of the popular Minecraft game, commenting on Twitter. Shortly after I saw a tweet from developer Casey Muratori, "I am very sad to say that Windows 8 is apparently going to be a closed platform. Why isn't anyone covering this?"</p>
<p>The issue has been covered, of course. Microsoft was clear about this (with the exception of one aspect) from the first detailed unveiling of Windows 8 in September 2011. In the Windows 8 dual personality, the desktop side is an updated Windows 7 and apps are installed in the same way, from setup files obtained from anywhere, but on the touch-friendly side formerly called Metro, apps are, for most of us, only installed from the Windows Store. </p>
<p>The ARM version of Windows 8, called Windows RT, is where the lockdown really bites. No desktop applications can be installed at all, so it is Windows Store or nothing for consumers.</p>
<p>The rules are different for businesses deploying custom apps, and this is where Microsoft has not been quite so clear. Deploying apps without the Store is called sideloading, and is possible subject to certain limitations. Sideloading is described <a href="http://technet.microsoft.com/en-us/library/hh852635.aspx" target="_blank">here</a>. In summary:</p>
<ul>
<li>On Windows 8 Enterprise edition, you can sideload by setting a registry key and signing apps with a trusted certificate.</li>
<li>On other versions of Windows 8, including Professional and the ARM edition, you need to "activate the sideloading product key" before sideloading will work. What is this? It is not clear, but normally a product key means the long serial number used to install Windows. This does not sound like something that most users will have access to.</li>
<li>Developers can install apps using a developer license, but such licenses will expire so this is not a long-term deployment option.</li></ul>
<p>The immediate conclusion then is this:</p>
<ul>
<li>The desktop side of Windows 8 on Intel is equally open as older versions of Windows</li>
<li>The tablet side of Windows 8 is designed to be restricted to apps downloaded from the Store in most cases, other than for businesses with custom apps</li></ul>
<p>Since Windows 8 on Intel is open on the desktop side, smart people will likely soon work out how to overcome app restrictions on the tablet side as well. Windows RT may be more challenging, but I imaging jailbreaks will come along for that as well. The rules still make a difference though, because only a minority is willing to hack their machines.</p>
<p>Is this the beginning of the end for Windows as an open platform? That is an interesting question, and I have seen predictions that the desktop will wither away, such as <a href="http://hal2020.com/2012/09/27/windows-8-and-arrogance-or-not/" target="_blank">this</a> from former Microsoft employee Hal Berenson:</p>
<blockquote>
<p>The Start menu, and indeed the entire desktop, are legacies that will have to be removed from Windows over time.&nbsp; While the desktop itself is probably with us for a couple of additional major Windows releases (though there may be truly desktop-free editions sooner than that) ...</p></blockquote>
<p>Still, even if Berenson is right, desktop Windows on Intel will be with us at until Windows 10 in say four or five years time, which means maybe six or seven years before a potentially desktop-free Windows 11. None of us can see that far ahead though. If Windows RT takes off, we could be thinking of Windows as mainly a tablet OS much sooner than that. </p>
<p>On the other hand, if the tablet personality in Windows 8 fails to achieve its goals, desktop Windows may remain the main version forever until Windows fades away.</p>
<p>Nobody knows, though it is fun to speculate. However, it is interesting to examine why Windows is becoming less open and whether or not this is a bad thing. </p>
<p>Microsoft could not get away with this so easily without Apple, which came up with the "App store only" model for the iPhone and iPad. That makes them closed platforms, and makes Apple a ton of money from store fees, but users are happy because app store prices are generally low, plenty of apps are free, and&nbsp;there is no uncertainty about "where do I get apps for my iPad?", and the App Store is curated so that it should be malware-free, and if malware were to sneak through, it would soon be removed.</p>
<p>In a business context, where administrators want full control over which apps are installed for security and stability reasons, a closed platform is mostly a good thing. A closed platform in combination with the sandboxing of apps on the tablet side is a very good thing.</p>
<p>What about open source? What about consumers? There are fundamental objections to closed systems, which inherently put too much power in the hands of the platform owners. How can we be sure that Microsoft, for example, will not favour its own applications over competitors for things like Office? This is already the case with Windows RT, which comes with Office pre-installed and no way to install an alternative on the desktop side.</p>
<p>On the other hand, the openness of Windows, once a benefit as it encouraged a strong application ecosystem, has become a disadvantage. Users love the performance, stability and clean user interface they get on an iPad, versus Windows machines which more times than not are spoilt by apps running on startup that are not needed, mysterious toolbars that appear unasked in web browsers, along with adware and sometimes malware.</p>
<p>Anybody looking at Windows today would conclude that the system needs to be brought more under the user's control; and that is hard to do without lockdown. Windows Store apps in Windows 8 are easy to install and, more important, easy to remove.</p>
<p>There is every likelihood than that both businesses and consumers will see the lockdown in Windows 8 more as a benefit than a burden; which is actually a good reason for those who may in consequence lose out (like Valve which runs a games store for Windows) to shout loudly about the issue.</p>
<p>The case is not simple though, and on balance most users may well be better off with a less open system than they currently enjoy.</p>
<p>Finally, remember that Intel Windows 8 on the desktop side remains as open as ever, and will be for the foreseeable future.</p>]]></description>
            <link>http://www.itjoblog.co.uk/2012/09/how-open-is-windows-8.html</link>
            <guid>http://www.itjoblog.co.uk/2012/09/how-open-is-windows-8.html</guid>
            
                <category domain="http://www.sixapart.com/ns/types#category">Rants and Raves</category>
            
            
                <category domain="http://www.sixapart.com/ns/types#tag">microsoft</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">open source</category>
            
                <category domain="http://www.sixapart.com/ns/types#tag">windows</category>
            
            <pubDate>Sun, 30 Sep 2012 09:50:01 +0000</pubDate>
        </item>
        
    </channel>
</rss>
