Category: General Topics

  • Error 500 on LocalHost

    Having just updated windows 10, which I think updated the ASP.NET components to 4.8/or an update to 4.8, I suddenly started getting Http Error 500’s on every site on localhost, which is a problem for a web developer!

    I went into Internet options and turned off Show friendly Http Error Messages, which then showed me it was a 500.19 error.

    The answer was to go into Windows Features and ensure that Http Activation was turned on.

    This post explained it for me, kind of.

    https://stackoverflow.com/questions/20048486/http-error-500-19-and-error-code-0x80070021

  • Accessing Network Drives when using Running as Administrator

    Accessing Network Drives when using Running as Administrator

    I always run Visual Studio in Administrator mode, as outlined in a blog post from 2016 titled Running Visual Studio as Administrator.

    This is fine in most circumstances, but it can be a pain trying to access network drives when running as Administrator. I recently had a Console App for example which accessed documents on a network share. Its difficult to turn off run as administrator in Visual Studio.

    I googled a possible answer, and found the following article: http://www.winability.com/how-to-make-elevated-programs-recognize-network-drives/

    The long and short of it is you need a new registry key, and then after setting it, reboot your computer.

    
    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System]
    "EnableLinkedConnections"=dword:00000001
    
    
  • Politics and the Recent NHS Cyber Attack

    Politics and the Recent NHS Cyber Attack

    I haven’t paid a lot of attention to the recent NHS cyber attack in the news, where the PC’s in many businesses worldwide, including many NHS sites, were shut down by the WannaCry ransomwhere. What has got my attention is the sheer amount of rubbish being spoken in the media, not helped by the fact that its election time. Lack of investment, whose fault it was, etc. etc.

    What is Ransomware?

    My understanding of this type of virus is that it is likely to be a “Trojan”, which has come from the internet most likely by an email attachment from an untrustworthy source. The attachment contains an executable that silently installs itself on the PC, ready for the time it is set to become active – a timebomb if you like. The idea is to infect as many PC’s as possible before it is activated, to increase the chances of some people who have not backed up their PC’s, paying the ransom so the activation time might be set to months in the future. It may also have come from an untrustworthy website that a user has browsed, but I personally think email attachments are much more likely.

    What makes things worse is that anti-virus programs will not detect this until the anti-virus vendors are aware of the specific virus and can issue an update to the anti-virus software (some anti-virus programs keep a track of programs that are allowed to access the internet, I’m not sure if this would have helped in this case, because WannaCry may not have needed to access the internet once it was installed). Another problem is that once one PC in a network is infected, it might be possible depending on the virus and also other network settings, to infect all the PC’s in the network.

    Is it Really Down to a Lack of Investment?

    Taking the NHS as an example, what can this so called lack of investment pay for, if it was provided? As related previously, I’m not sure that having the most up to date anti-virus would save you in this case, although obviously it is a good idea generally to have an anti-virus program and keep everything up to date (only one anti-virus program though, having many on the same PC is a duplication of effort and can slow down the PC excessively). While you can always argue that extra computer staff would be better, I don’t think that is the solution either. Not having enough money is an easy excuse, at some point you have to think about what actually the problem is and what you can actually do about it.

    How to Protect your Business from Cyber Attacks

    What is really needed in my opinion are two things and they need not be that expensive because the same concepts could be applied to the whole of the NHS (for example):

    1. Decent email security via the NHS email servers – this scans for viruses before the email is delivered to the individual PC. I don’t have a package I could recommend, but I do know its possible. I personally have used the 1 and 1 email system for my personal and business emails for years, and its a very good system. There is very little spam, and very few mistakes made in terms of stopping non-spam from reaching my inbox.
    2. A decent webfilter – a webfilter is a software package that is installed on a network server and which stops users from browsing websites that are not related to the business use of the computers concerned, e.g. news, travel, and especially, messaging and email. Allowing users to browse the internet on work PC’s is not only a source of interruption or distraction and potential time waster for the business concerned (just stopping Facebook would probably half the distraction but I digress), but particularly if email websites are allowed to be accessed it bypasses any email security that the business has set on its email servers, because the attachments on personal emails can also be used to infect PC’s in this way and massively increases the chances of the network being infected.

    How to Protect your Home Computer from Cyber Attacks

    • Keep your anti-virus software up to date
    • Turn on automatic updates on your computer
    • Use the best mail server possible with the best anti-spam
    • Do not open attachments or click links on emails that could be spam
    • Turn on the Windows Firewall in all PC’s in your network, to help prevent contamination from other PC’s.

    These points are especially important if you have children accessing the internet in your household. You could consider activating parental controls in your internet router if it has this feature (I personally had two networks at home when I had children at home, because I worked at home and didn’t want my work network being infected from some of the rubbish websites that teenagers look at).

    Conclusion

    Why have so many PC’s been infected worldwide? Well as related it can only take one attachment opened by mistake in the past six months by one person to infect an entire network. Many users are not that computer savvy, despite all the warnings they will still do it, particularly if the email looks half genuine.

    If the solution is as simple as I’ve suggested, why hasn’t it been done in the NHS? Its like anything where many people are concerned, just getting it agreed I think will be the problem in many cases. If the managers use the internet themselves to do their shopping, book their holidays etc, they are unlikely to agree to buying a package that stops them from doing that and worse, can report on internet usage and actually discipline staff for misuse of the company internet access. I wouldn’t be surprised if the attitude was “I work hard, I’m entitled to a bit of free internet time”. Personally I think not having a decent webfilter is a big problem with the number of interruptions or opportunities to access Facebook rather than do any work seriously affecting productivity in many cases, but that’s another subject.

  • Running Visual Studio as Administrator

    Running Visual Studio as Administrator

    I have user account control turned off on my development machine and also run Visual Studio as administrator by having the shortcut on my task bar, right clicking, right clicking Visual Studio choosing properties and then clicking Advanced on the Shortcut tab.

    However, in Windows 10/Visual Studio 2015, I have discovered the problem when developing a web project in IIS where if you are not in administrator mode, you will get “Unable to start debugging on the web server. IIS does not list a web site that matches the launched URL.”.

    Unable to start debugging on the web server. IIS does not list a web site that matches the launched URL.

    Running Visual Studio as administrator fixes this problem. But the problem with my method of setting the shortcut above means that if you right click the shortcut, and then click a recent project, Visual Studio does not run in administrator! Talk about life being complicated enough without some butt head at Microsoft making it even more complicated! Not only that, the error message is a lie, it should just say “You don’t have permission to access IIS, do you want me to fix this?”!!

    I learnt something today, which is why I’m writing this post. The way to fix it every time you run Visual Studio, is to update devenv.exe in the Visual Studio folder to always run in administrator mode.

    To do this, carry out the following steps:

    1. Find Visual Studio. Mine was in c:\program files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe. I found this from the right click menu on the short cut where I clicked “Open File Location”, which was easier than browsing the file explorer for it.

    Shortcut Properties showing advanced button

    2. Right click devenv.exe in file explorer and click “Troubleshoot Compatibility”. The first time I ran this it took me straight to the test page in the wizard for some reason so I ran it again.

    Program Compatibility Troubleshooter

    3. Click “Troubleshoot Program” then “The program requires additional permissions” and click next.

    Program Compatibility Troubleshooter

    4. You have to click “Test the program” otherwise you cannot continue. After doing this click Next. You then have the option to save the settings.

    Program Compatibility Troubleshooter

    5. Click the “Yes, save these settings for this program” and you are done.

  • 14 reasons why Tight Control of Software Projects doesn’t Work

    14 reasons why Tight Control of Software Projects doesn’t Work

    With the advent of Agile techniques, thankfully companies that try to control every aspect of a software project in order to measure progress are becoming a thing of the past, thankfully far fewer than twenty or thirty years ago when I started as a software developer.

    I blogged about the dangers of tight control a while ago, in January of this year, in The Dangers of Planning Time on Software Projects.

    I also recommended Ron Jeffries book, The Nature of Software Development recently to people who had not discovered Agile techniques. Ron is a founding member of the Agile manifesto and this is an excellent introduction to managers and developers alike. In his book, Ron states that it is a bad idea to try to create tasks and control these within a sprint and even if you must do that, don’t specify stretch goals which are tasks that developers “get to” if they finish other planned tasks.

    I was looking for a really good introduction to Agile to be able to recommend to others and this book definitely is it. Anyway on with the post. Why does tight control not work for software projects?

    Estimation

    1. Software Development is Design, not Production and it is impossible to estimate tasks accurately, certainly anything like half a day, let alone less than that. You cannot see the details at estimation time, and if you can you might as well have done the work having far increased your time by giving such a detailed estimate.
    2. If the developer is doing something that has not been done before, either for themselves or for the project, it will likely take longer and be more difficult to estimate. If it involves learning something new – a pattern or technique – the estimate could be 3 or 4 times over. This is hard to justify without looking bad in front of your manager (if your manager doesn’t understand).

    Extra Overhead Involved

    3. Developers are not always the best documenters so many details are very difficult to justify.
    4. Documentation is required to communicate with managers both on tasks and on making copies of technical details because managers cannot read code (using techniques such as Domain Driven Design or just plain good object orientated design, modern code can be structured in such a way that the intent is visible in the code, so no need to duplicate lots of small details in Word and Excel spreadsheets, that then need to be maintained). Note: this is not an excuse for Agile projects to document or design nothing at all but what is documented must be properly maintained along with the codebase.
    5. It is not always possible to explain and justify detailed concepts to a manager who was a COBOL programmer once but doesn’t really understand that he/she doesn’t understand modern practices and patterns. Result: either a lot of time spent trying to justify, or the detail might just get missed, or a simpler to justify technique (that is worse for the project) might be used instead. Maybe you just start coding and hope for the best…
    6. There is a risk that tasks will be specified from above in an inefficient or impossible to achieve order, which dictates creating software components earlier in the development process than otherwise would be the case. Agile techniques leave detailed decisions until they need to be made. They are not over specified up front. Also concentrating on Agile’s value proposition and continuous delivery helps mitigate this problem in any case. I once worked on a big project like this with nothing whatsoever to deliver until the end – the “big bang” approach which is one of the reasons software projects fail – the requirements move on so much during the time the software is being developed, its unusable when delivered.

    Overruns

    7. If an overrun occurs, the developer is then full time on the extra overhead of trying to justify why the estimate was wrong and updating the task database when the developer should be concentrating 100% on delivering the correct solution for the software rather than breaking a chain of thought that led to that point.
    8. If a concept or technique is developed that isn’t 100% correct first time round, then extra time will be required. Does the developer soldier on and keep their head down, or go to their manager and ask for more time and incur a lot of justification, admin and look bad in front of their manager? Or do they ignore and just complete the task the best they can thinking they can come back later? Agile techniques practice continual improvement in response to continual change and learning of requirements from customers. The developer is continually re-factoring and improving code. The non agile manager could see this re-factoring as paying for the job twice or worse when the opposite is the case.

    Technical Debt

    9. The risk of technical debt if there is too much interference (from any of these points), or if there is nobody in the team to shield the developer from excess pressure. All teams need senior developers in my view, to help shield excess pressure from above, to help with strategy and to guide and develop other developers skills in a way that is beneficial and doesn’t impact projects too much.

    Trying to Monitor Performance

    10. Monitoring performance is a management problem, that management should ideally carry out with a minimum of interference on the work involved. Many in the NHS or schools have this problem. Because the politicians need “facts” so they can cherry pick and obfuscate them for their own ends, they double the overhead in these places just because they need figures they are going to change anyway. Who wants to work for a job with the prime minister looking over your shoulder telling you how to do your job? Thankfully in software, we have Agile techniques that allow us to avoid this problem.

    Other

    11. The risk of constraining the project to a size and complexity that a manager can understand all the details or to what can be justified to managers. Even though Larry Page and Sergey Bryn are good programmers, at Google engineers stopped both from programming early on in Google’s history, possibly for this reason, I don’t know for sure I wasn’t there.
    12. Sometimes there are times when the team knows what do do. Management (team leaders included) should just get out of the way and the developers should get on the best they know how without hindrance.
    13. Finally education can suffer. Development by its very nature is a learning process where the team learn about both the application they are producing and the best techniques to use as they go along. Not allowing time or budget for education, especially if this impacts your software architecture is a really bad thing. Also these kind of companies can’t justify 20% time such as that practised at Google, where 20% of the time developers are free to develop anything they want – this will be normally things that better their own skills and the companies fortunes but which they can’t justify in advance to a manager. The classic example of this was Adsense at Google but I am sure there are many among the enlightened companies that allow 20% time or who have good developer training budgets.
    14. Often projects like this will overlook architecture considerations, correct object orientated design, or domain driven design, because the managers controlling don’t really know what they are, how they relate to a project, or why they are so important and useful to ensuring the absolutely best product is delivered in the shortest possible time. Result: Work has to be done many times over and due to the lack of architecture contains many bugs rather than being bug free first time, and is never right, or anywhere near as useful to the end user as it should be.

    All or any of the above can double or triple the size (time taken) of a software development project. Tight control is really unnecessary in this day and age. Not having a route to channel concerns or make those concerns hard to justify, can double or treble it again, as can not having a suitable developer or manager to shoulder and handle excess pressure from management. Excess pressure leads to code smells and technical debt. This is without considering the actual practices and patterns used when developing the software.

    I have worked on some projects where even getting a web project to use caching has been a mammoth task and has taken a couple of days writing detailed documents and then a couple of months to schedule a meeting to discuss the document just to try and justify it. A couple of days is enough to develop and refine the caching algorithm to use and trial it in the project to see what actually works for the system and letting the results speak for themselves. That is the point of Agile – don’t try to justify anything, let the software speak for itself and if it isn’t right, change and add to it until it is.

    How to avoid these pitfalls? Follow Agile techniques. Measure what is actually planned and delivered for each sprint, and leave the developers to get on with each sprint without hindrance or slowing them down by asking them to do admin tasks and justify being there all the time. Control the project by changing priorities based on value delivered for future sprints. Do not mess with current sprints where at all possible. Do not over specify to the nth degree and then interfere with the detail as well as the time being spent. Specify all requirements in user speak. Do not try to tell the development team how to do things and when to do them apart from specifying requirements and sprints to do them in.It really is a recipe for disaster.

    Ron Jeffries book is on my Software Architecture and Design Books page. Highly recommended.

    Another way of looking at all of this is to be Agile and measure on results – i.e. on deliverables delivered within timescale and budget, not on specific detailed data. If your project is not delivering, ask yourself why. You can also contact me and ask me why if you like. If you are open to new ideas, I’ll come along and help you sort it all out – to your complete satisfaction – no problem at all.

  • Test Driven Development (TDD) – Code Coverage

    Test Driven Development (TDD) – Code Coverage

    Should you aim for 100% code coverage on Test Driven Development (TDD) projects?

    My view is that for TDD projects, only the business logic layer should be under TDD, not every line of code in every layer. This way it gives you maximum benefit developing the core unique thing you are developing, and lets the common and garden plumbing in other layers be produced without 5 lines of test code for each line of application code produced.

    Controversial? Many projects blindly use tools like NCrunch and aim for every line of code to be covered by a test somewhere.

    I personally don’t think this is necessary and adds a lot of overhead to a project where if you are following SOLID or similar rules your MVC views will only contain formatting and your data access layer will contain lots of small very simple functions. So what if you miss a where clause off a select? It will be really obvious really quickly especially if the repository method is used in more than one place, and fixing it once will fix it everywhere. I think a balanced approach is much more productive, although like a lot of my views, these are strong views, weakly held – that is, the client can easily convince me that if they want to do it differently they can, because they are the client after all.

  • ASP.NET 5 is Ten Times Faster?

    ASP.NET 5 is Ten Times Faster?

    I was watching an introductory video on ASP.NET 5 and MVC 6 from Jon Galloway of Microsoft on ASP.NET 5. One of the things he talks about is the new performance benchmarking suite for ASP.NET 5, which on a simple response.write test shows that ASP.NET 5 using Kestrel rather than IIS is 10 times faster on this test that 4.6 on his laptop.

    ASP.NET 5 / MVC 6 Mind Blowing New Features?

    This is an interested introductory video, there were a few things that totally blew my mind:

    • MVC 6 does not use .csproj files, it has a wwwroot folder instead for all public files. All other files are considered private.
    • The Html Helpers (that I love) have been changed to use asp- markup (which I am sure I will also love in time)…
    • There is no web.config, apart from the odd time you see it configuring IIS, if IIS is being used in your project. This is replaced by a “Secret Store” and Startup.cs in the code.
    • It appears to be getting even closer to the metal than MVC up to 5 did, with lots of interesting web options. Basically Microsoft are saying if the web supports it they want to support it. Real easy.
    • The new Roslyn compiler allows you to break, change code, and continue when debugging.
    • I was worried at one time, having been a developer when Microsoft brought out Java and tried to customise it, that it might try to customise javaScript when it brought out Windows javaScript apps. However I have seen no sign of this, they appear to be actively supporting best practice javaScript standards and packages. JavaScript is shipped via Grunt, Gulp and Bower, not Nuget anymore.
    • MVC and WebAPI are now merged in MVC 6, previously MVC was dependant on System.Web, which was not the case with WebAPI 2.
    • There are three choices for developers, ASP.NET 4.6, ASP.NET 5 and ASP.NET Core with MVC 6. The last one is cross platform, installable from nuget. Oh and its cross platform, works on Linux and Mac as well. Who would have thought it? I don’t know how the latest Windows servers compare with Linux, Linux on Azure the last time I looked wasn’t super fast – real Linux ran this wordpress site far faster than Azure ever did (maybe the MySql database option I was using). However long ago Linux was far faster than Windows, in the sense it could multi task better and handle more workload by a large factor. I don’t know if this gap has closed or not in recent years, but for sure this kind of thing will put Microsoft under pressure for Windows to keep up, which has to be a good thing.

    New Tag Helper Markup

    So tag helper markup will in future look like this:

    Log in Form

    Useful Links

    A useful links from this video:

    Summary

    I’ll be spending quite a bit of time this year with ASP.NET 5, MVC 6 and all the latest web goodies, so I am sure to blog more about this in future. If anybody would like me to blog about specific parts of ASP.NET 5, MVC 6 and related technologies, please comment on the blog, all requests considered.

    I have to say… just what is going on at Microsoft? Have I died and gone somewhere else? I know they have been producing so many good things in recent years that have been really difficult to keep up with and that the developers there have come of age and understand real world things like dependencies and the importance of code readability rather than how to produce a really slick demo app that doesn’t scale very easily. What an exciting time to be a developer!

  • Upgrading Windows 7 to Windows 10 – Take 2

    Upgrading Windows 7 to Windows 10 – Take 2

    My Windows 10 Upgrade History

    On Nov 1, 2015, I tried to upgrade my laptop to Windows 10. This was a bad experience, when it had upgraded I didn’t have a start menu or an App Store, so I reverted back. See this link to the original article about my Windows 10 upgrade experience.

    I wasn’t very happy at the end of it, and had my usual rant about about Microsoft and software in general, in that you should have confidence in your own software design, screen layouts and ubiquitous language, and certainly not focus on your competitors to the detriment of your own product. Apart from this ongoing gripe with Microsoft, they have come a long day since the days of .NET 1.1 and datasets, and I like their products, Windows 10 apart, a lot. Maybe the Gu should take control of Windows10 and bang a few heads together who knows?

    Giving Windows 10 Another Try?

    Anyway I felt it was important to give it another try, for two main reasons:

    1. As a screen space junkie, I wanted the multiple screens on Windows 10, even though my laptop is high res. anyway, and on my desktops I have two 4k screens.
    2. Although I don’t tend to go for latest versions too soon, as a developer its important to know about the latest technology especially if its going to affect you or your clients at some point.

    So I decided to give it another try. I got the same laptop, which hasn’t really been used since then, ran Windows Update and tried again. This time around I did the same things, but it took a lot longer to upgrade (was it because I had installed SQL/Server 2014 and Visual Studio 2015 on it… maybe…).

    But importantly this time around it was smooth. Everything worked as expected and apart from a few settings which I feel are good for developers, its all working fine without problems of any sort.

    Using the Windows key and then tab, or Windows and CTRL and left or right arrow, or Windows and D – all are used for different things on the multi screen features of Windows 10.

    A nice bonus that I didn’t know about in advance was that you can now use two fingers on the mouse to scroll, although not as smooth as on my Macbook Air, it works (so Windows can now do multi-touch – I assumed that was something that Steve Jobs had patented early on in his second stint at Apple – interesting).

    I’m not really a Windows geek, my head is too full of developer thinking and C# to worry too much about the operating system, I would have been happy with Windows 7 with multi screen, but so far so good anyway.

    What I have Done Since the Upgrade

    This is what I have done to the installation since the upgrade:

    • Turned off User Account Control. Not sure if this is the same as in Windows 7 but I’ll keep an eye on that when using Visual Studio.
    • Checked my settings in Control Panel to check that Show Hidden Files and Hide Extensions for Known types are set as I like – the Windows 10 installation did not change these.
    • Checked Windows Update and made it as lazy as possible, that is under Settings->Advanced Options
    • Disabled Windows Defender real time scanning in the group policy editor. Developers, who don’t use email on a machine, don’t need all this stuff turned on.
    • Disabled automatic drive optimisation (defrag) because my laptop uses dual Samsung SSD’s and its not recommended to optimise SSD’s. It did recognise these as SSD’s but doesn’t do anything it just says “Optimisation not available” so rather than have it run pointlessly, as I have no hard drives, just SSD’s, I disabled the weekly optimisation step because I don’t ever want my PC to waste processor clock cycles on doing stuff that it shouldn’t. Anything that makes Visual Studio compiles not instantly fast, even on the large projects I work on, is BAD.
    Screen print of Windows Update Settings on Windows 10
    Windows Update Settings on Windows 10
    Screen print of Windows 10 Group Policy Editor for Windows Defender
    Windows 10 Group Policy Editor for Windows Defender

    The benefit of using Group Policy Editor for Windows Defender is that it stays off. Windows 10 will re-enable it if you turn it off by going into Windows Defender – very annoying!

    Windows Defender Group Policy Settings are under Computer Configuration->Administrative Templates->Windows Components->Windows Defender. I have modified three settings:

    Turn off real-time protection Enabled.

    Turn on behaviour monitoring Disabled  (Hello? I’m a developer, I know more about you than you will ever know about me you stupid machine! What do you think you going to learn by looking at my source code and executables, slowing me down and making my life miserable?)

    Monitor file and program activity on your computer. Disabled. I’ll do that myself thanks.

    The Microsoft Windows Team needs to add a big developer button to Windows 10 that dumbs down all this consumer crap and puts a Visual Studio 2015 icon on the desktop for devs. So maybe we should send the Gu round to the Windows 10 team to bang a few heads!

    Anyway, on the whole, so far so good. I’ll blog again if there is anything further to add about Windows 10 when using it as developer with Visual Studio 2015.

  • Dual 4k Screens now up and running

    Dual 4k Screens now up and running

    As I explained back in January when I purchased my first 4k screen and blogged about it then with 4k Screen, Developer for the User Of, a developer cannot have enough screen space and also real desk space to work with.

    I have retained a 1920 x 1200 screen in order to focus on one (Visual Studio or SSMS) window, but the other screen serves as desk space rather than having everything minimized and more difficult to get at.

    Since moving house last week I have wired up my two dev PC’s in such a way that the 4K screens can be used by either PC (they typically have multiple inputs and can either do split screen or full screen on one of the inputs).

    So now I have both PC’s with one 1920 x 1200 and 2 4k screens. The Windows font size has been set at 125% in order that the text on the 4k screens is not too small. See below for results:

    Photograph of 2 x 4k screens with 1 x 1920x1200 screen
    Serious Developer Screen Space
  • Upgrading Windows 7 to Windows 10

    Upgrading Windows 7 to Windows 10

    I have a Dell Precision laptop with 16Gb of RAM, dual Samsung SSDs in RAID configuration and a Core i7 processor.

    I tried it as my main development machine once with a Matrox DualHeadToGo fitted, but I now have a more powerful development machine with 32Gb of RAM (two actually – one for admin and emails, the other for pure development), I use the laptop for development on client site when this is needed.

    It runs Windows 7, Visual Studio 2013, SQL/Server 2014 and Oracle 11g and I am pretty happy with it. Its responsive and has quite an high res screen also, useful as all developers will know.

    I had a rush of blood to the head yesterday and decided to try the Windows 10 upgrade it kept nagging me about. After all, Windows 10 is an improvement on Windows 8.1 apparently, and I have installed 8.1 on one of my desktop development machines and have not been unhappy now they stopped reverting back to the new start menu with every interaction with the computer (still no “My Computer” though – you need more than one interaction to get to this).

    As developers, we always have to keep up with new developments, and I wanted to try the multiple desktops feature, so I accepted the upgrade to Windows 10 and followed on screen instructions. The upgrade process itself went along smoothly and within a couple of hours I had a Windows 10 laptop.

    I then tried to login. It wouldn’t recognize my Windows Live Id, despite this working on Windows 8.1 in my home office. So i used the local login I had used for Windows 7 before. I got an error message something like C:\Windows … SystemProfile\Desktop not available. The desktop was blank and the start menu was unresponsive. I googled around on my other machine and couldn’t find an answer. In the end I just rebooted and tried logging in again. The Windows Live ID still wouldn’t log in, but my desktop was restored in Windows 10 when I logged in as a local user.

    So first impressions was that it was slower and had used 16Gb of disk space, leaving me with 60Gb free. Also it said Cortana was unavailable in my region. Turning off Windows Defender real time checking restored the speed – as a developer I always know where I’ve been and don’t do stupid things like opening attachments from emails – I don’t even have email on my main dev machines – I depend on regular virus scans rather than trying to catch them in real time on my dev machines.

    I definitely wanted to update the start menu to use Google rather than Bing to search. I googled an article from HowToGeek to do this but didn’t get around to actually doing it as I got caught up in other issues.

    Left clicking the start menu only gave me two options and the “All options” at the bottom left. So I had to drag my most commonly used options to the start menu. I expected to see a lot more default options on this menu and thought I was missing out from some of the default Microsoft Windows 10 ones.

    I also found that Control Panel doesn’t now have all the options, there is an App called “Settings” that has more. When you go into Control Panel there is no link to Settings and vice versa.

    Right clicking the start menu is just as crap as Windows 8.1 – no My Computer option which is my personal beef. Just an hotch potch collection of things that have been thrown there that they think you might need.

    The thing that really gets me with new versions of Windows is that the user interface, all the options, should be consistent over time. If you are going to design software and then not only arbitrarily rename the options and move them around, this is not good. It might show a weakness and lack of thought in the original design but for me its more about smart asses who don’t have to use the software in the real world doing it because they can, and because nobody stops them. So we are where we are, if you are going to change it then at least do a good job once over and then progressively improve. There is no progressive improvement that I can see. Why the change from Control Panel to Settings? If you must, why keep both? If you must have settings, Control Panel should just be an alias, a shortcut to the new name. All the lost productivity, the re-training costs affecting millions of people just because some university grad at Microsoft with 2 years experience thinks he / she knows better than the rest of the world put together. Sorry, Windows 10 is still just an half assed attempt at an operating system, full of ill thought out and incomplete features. I should have the option to remove all these crappy half finished features until they are properly thought out and complete not get these stuffed down my throat every time!

    Lets just imagine for one second that I’m not a software developer, I’m an airline pilot going to work. I arrive in the cockpit of my Boeing 747 and see I’ve had a new upgrade while I’ve been away. All the instruments are in different positions, they have hidden part of the flight controls so I have to search to find them, and also given me a toolbag with a few things in it I might need. Approach Charts, parts of checklists all scribbled out and amended, a landing gear locking pin, a knife and fork for my lunch. Now I know I’m getting a bit carried away here, if this happened in the airline world the crew would go for training, and such changes as we are suffering here would get kicked out. They would refuse to accept them.

    On one of the Dot Net Rocks shows (I think – I listen to Dot Net Rocks and HanselMinutes), I think someone said that Microsoft got one release wrong (Vista) then one right (Windows 7), so Windows 10 was going to be a success. I certainly hope so, but it doesn’t not necessarily follow unless you address the underlying reasons why you made a bad release in the first place. This involves more than just looking at the features.

    Anyway, rant over. There were two things that were deal breakers for me and resulting in me going for a meal with the missus in disgust, but not before asking my laptop to revert to Windows 7 while I was out:

    1. The first problem was that Amazon Kindle wouldn’t work. There was a new version in the App Store. I uninstalled Kindle and tried to run the App Store. After 5 minutes, it came up with an error and then disappeared. I googled around for this and spent a couple of hours on it, but couldn’t find an answer. I couldn’t get App Store working.
    2. Windows Update – moved from Control Panel to Settings, also took an age checking for updates – in fact it never came back, I got bored of waiting after about 20 minutes. The other problem with Windows Update was that it doesn’t have the option to individually review updates apparently. Just a broad brush option to defer new versions for an unspecified period of time. I’m not happy with this because as a developer I would like to be very specific about versions of software I am running.

    I did manage to disable real time checking in Windows Defender – so that Visual Studio responds as it should, and also turn down User Account Control – again so Visual Studio runs as administrator correctly. But the two problems above and the fact that they only gave me a month before I lose the option to revert, sorry Microsoft, it just had to go. I even went as far as getting rid of the Windows 10 upgrade icon on my existing machines – you uninstall KB3035583 as outlined in How to Disable the Windows 10 notification icon. You can also grey out the Windows 10 update in Windows Update.

    The future? Well I don’t have unlimited time to mess about with these things. My head is full of things that developers think about, not system admins. I think the future is to try to disable my laptop from automatically upgrading to WIndows 10 (there has been some talk of it being forced on us next year) and possibly creating a VM to create a clean install and having a good play around with it before deciding to do anything as rash again. Hopefully Windows 10 will work on a clean install, its just then you have the cost of re-installing all your applications etc. I really wanted the upgrade to work so I could get to know it on an occasional use machine.

    I like Windows 7, because its simple. When are they going to bring out a Windows 10 Foundation or Windows 10 Essentials that just has the basic options that we want? A kind of Windows 7 with multiple desktops and lightning fast response? The Windows 8.1 machine I have is a bit like this now I have a desktop that doesn’t keep disappearing if I kind of ignore the rest of it. Everyone knows you shouldn’t focus on your competitors and lose track of where you are and what you stand for, which I think they were guilty of at some points in the past. I don’t even think they are doing that at present. Maybe the Windows developers will grow up and gain some experience and knowledge like whats happened in other parts of the company. For sure I hope this disease doesn’t spread to their .NET and Azure divisions because what has been happening there for the past eight years or so has been really, really good and long may that continue.

    Hope this information helps somebody.