Microsoft says – Don’t Use IE!

Microsoft says – Don’t Use IE!

So I read this post and all the comments and think to myself – no one seems to be saying it!  So I will… (obviously)

For more years than I can remember, Microsoft has had a habit of pushing “the enterprise” down its own path, with an obvious (to me anyway) lock-in strategy.  IE over the years has shown this up time and time again.  I thought Chris Jackson’s comments were a little bit dismissive of Microsoft’s responsibilities here, and I wanted to state that the reason why IE/Edge is still required by many customers is that Microsoft’s platform, especially Microsoft’s development environments have made use of the IE-specific quirks, leaving vast swathes of enterprise-developed apps depending on IE. 

Even worse, so many ISV’s have jumped on the “easier to develop” enterprise software platform (started with VB back in the day, right through to .NET and its kin today) building software for sale that organizations have purchased and gotten tied into.  Be it, ASP.NET, or ActiveX or Silverlight (what a mess that was) the numerous browser quirks and non-standard, undocumented esoteric behaviors in the Microsoft browsers.  I think there was a time when Microsoft was trying to be the standard browser of choice, but failed miserably at it.  I do like Chris’s advice though, and as someone that is responsive web software development, I wish I did not have customers DEMAND we support IE11 because that’s their standard browser, it’s annoying and frustrating and not of our own making.  

Three years ago, we relegated development for IE to “best-endeavour” only, that means we will put reasonable effort into fixing anything obvious but have drawn the line and doing IE/Edge specific workarounds/hacks for our software. That has sadly left some of our customers stuck with different browsers for different applications, but we do not accept that is a problem of our making, we used to feel bad when our customers would tell us “well you are not Microsoft so fall in line” – not anymore! 

Now before I start to sound like I am hating on Microsoft, I must make clear that in recent years I think Microsoft has done a remarkable job, a remarkable turn-around even.  Windows 10 is orders of magnitude better than any Microsoft OS before it, Edge is not terrible and mostly works, although it’s still quirky. And hats off, O365 is a winner – very nicely done team Microsoft. 

Dear Microsoft, if it were up to me…

  • You have the capability, the developers, and the financial resources, probably more than most other software companies in the world, go and build a world-class standards-based browser, do for your browser what you already did for C++
  • Or, hurry up and develop your chromium-based browser and get shot of IE and Edge as soon as you can.
  • Go and help your customers remove their technical debt in relation to IE, its not their fault entirely, you created the environment – help your customers fix it
Apple 27 iMac Teardown, SSD Hack and 2TB Upgrade

Apple 27 iMac Teardown, SSD Hack and 2TB Upgrade

My 2010 27″ 1TB iMac ran out of disk space because of the video content I was creating. Despite Apple’s best effort to limit my upgrade options I manage to upgrade it to include a 250GB Solid Sate Drive (SSD) plus a 2TB Hard Disk Drive (HDD) and get my system back to its last working state but with lots more disk space and much faster boot and application load times. Plenty of gotcha’s along the way – I had to work out and do a few ad-hoc adaptations. I cover new disk preparation, computer tear down, SATA adaptation, HDD temperature sensor hack and data moving, and data and account recovery.

This is the longest video and the longest blog article I have written to date, and thats reflective of how much there is to cover – is not a simple task.

I removed a Seagate Barracuda 7200 1TB drive which is still in working condition, despite being one of the drives on a recall by Apple. They offered to replace the drive some time back but I refused as it was inconvenient to be without my computer for a week, let alone the hassle of taking it to and collecting it from an apple store.

I installed the following components.

  • Samsung SSD 840 Series 250GB
  • Western Digital Green 2TB – 6 Gb/s 64Mb Cache
  • SATA 90 degree Cable
  • SATA Power Splitter

The 2TB drive was a perfect physical fit but did not have a compatible on board temperature sensor so I had to fashion one from a transistor, I used a TO-92 2N2907 and used the base-emiter junction as a silicone temperature sensor. The SSD drive had to be installed with double-sided tape but being so small and light this was the best solution. The whole modification to the computer is 100% reversible.

WARNING: This is an EPIC video at 1hr 20mins so only watch if you are really interested and have some time on your hands 🙂

The following outlines the various commands and steps I took to make this work. I am not saying this is either the only way or the right way, its the way I used and it worked for me. The most important thing I wanted to achieve was to preserve all of my data and never have a single point of failure for my data throughout the entire procedure.

Before we do anything we must ensure that…

  • The computer is in a working state.
  • Have a *FULL* backup of the system – in my case this was on an Apple Time Capsule
  • Ensure the current system has *all* software and OS updates applied.
  • Ensure that you are logged in and have administrative rights on the account you normally use

Tools Used

Prepare SSD Drive

  1. Using the drive copy station, connect the SSD drive to the computer via USB
  2. Choose “Ignore” when you are prompted to initialise the disk you just connected.
  3. Using the Applications/Utilities/Disk Utility create a single partition on the drive – use all default options, call the volume “OS Boot” or other name you will recognise or makes sense to you
  4. Run the OSX Mountain Lion Installer application
  5. When shown the drive to install on, press the Show All Disks button and select the drive you just created a partition on
  6. During the install follow all instructions as if you are doing a new OS install, once complete it will want to re-boot, let it do what it wants. Eventually it will boot to your new drive
  7. During the installation it will want you to create the administration account, call this “Admin” or something else you do not already have on your current system.
  8. Don’t worry, your existing drive will still be intact. Once you have booted from the SSD drive and verified its OK, shut down the computer unplug the SSD and re-start, it will boot to the original drive once again.

Prepare New HDD Drive

  1. Connect the new drive to the USB using the drive copy station
  2. Choose “Ignore” when you are prompted to initialise the disk you just connected
  3. Using the Applications/Utilities/Disk Utility create a single partition on the drive – use all default options, call the volume “Users”
  4. You should now see your new 2TB disk in finder, the disk should be empty.

Now we need to create a temporary account to unlock your profile so we can copy your home folder to the new drive.

Create a temporary Admin Account

  1. Open System Preferences/Users & Groups
  2. Unlock the panel if required
  3. Add a new user, in the New Account field select Administrator
  4. Log out of the system, and log back in using this new account you have created

At this point you are ready to make a copy of your user profile(s) from your existing 1TB disk to your new 2TB disk. Open a new terminal window (Applications/Utilities/Terminal). You can list the accounts on your system by issuing the following command: –

ls -li /Users

For each account on your system that you want to re-locate to the new 2TB drive you should issue the following command: –

sudo ditto -v /Users/<ccount_name> /Volumes/Users/<account_name>

You should obviously replace the <account_name> part with the account name. In my case the command was: –

sudo ditto -v /Users/gerrysweeney /Volumes/Users/gerrysweeney

NOTE: You do NOT want to make a copy of the temporary admin account you created earlier that you are currently logged in as…

Do the hardware hacking

At this point you are ready to start the disk transplant process. You want to do the following things in order.

  1. Shutdown the computer cleanly
  2. Unplug all cables
  3. Take the computer apart and remove the 1TB hard disk
  4. Transfer the mounting braket and studs from the 1TB drive to the new 2TB drive
  5. Put the old 1TB drive into an anti-static back and put in a safe place – this is your fast recovery/back-out plan
  6. Remove the optical drive, screen backlight supply and main power supply boards, and then the main board – see video
  7. Install the new SATA cable for the SSD drive – either use the third SATA port or remove optical drive SATA cable and use that port – depends on your iMac model
  8. Replace the main board and PSU baords, take a lot of care routing the new and existing cables, there is very little room for error here
  9. Install the SSD drive using double-sided sticky pads – make sure its well fixed, you do not want it coming loose as it will interfere withe air flow that cools the GPU – this will Kill your iMac!!
  10. Re-install the optical drive (with or without being connected), the drive carrier acts as part of the air ducting…
  11. Install the new 2TB drive
  12. Fashion a suitable temperature sensor for the new HDD, I simply used a 2N2907 transistor which works a treat from what I can tell
  13. Re-assemble the computer
  14. Power up and make sure it boots to the new SSD drive
  15. Log into the “admin” account you created – this should be the only account on the system

If all has gone well you should have a fresh new OS and you should be logged in as administrator. The next thing we need to do is re-create the accounts and then re-locate their home directory.

Follow these next steps carefully…

First of all you need to create a new account for each account you have re-located. In my case the account I relocated is “gerrysweeney”. So go into the System Preferences/Users & Groups tool, unlock it if needed, then create the new account. By default, this will create a new account home folder on the SSD, thats OK, we will need to deal with that next. If you have more than one account you have re-located, create a new corresponding account for each one. When you create the account, use the same password as your previous account, this way your keychain will remain accessible and valid once you re-instate your home folder.

Now you have a new account with a new home folder on the SSD drive, the next thing is to modify that account and point it to the home folder you previously re-located. In my case the account was “gerrysweeney”. In the Users and Groups tool, press the “Ctrl” key and click on the account name, you should get a menu option called “Advanced Options…”, select this. The “Home Directory” field will be set to “/Users/gerrysweeney”, you should change this to “/Volumes/Users/gerrysweeney”. Again, do this for each account you have re-located.

UPDATE: Having done this I realised that later on I still have to set up a symbolic link to the home folder which is a couple of steps below. In lights of that you can simply skip the above step of modifying the account properties to re-locate the home directory. Once the symbolic link is in place it will work without doing this.

Now we need to change the permissions of each account’s home folder data to the account – this is important to re-syncronise all permissions. Open a terminal window and for each account you have re-located you should issue the following command: –

sudo chown -R gerrysweeney:staff /Volumes/Users/gerrysweeney

This command will change the ownership of every file in this folder, including the folder its self and all sub-folders and files. Now I am not sure this is exactly right, it is feasible there are system files that should be protected from the user but I don’t know – what I done worked OK so its pretty safe. In any case you need to do this for every account you have moved – remember to replace “gerrysweeney” with the right account name.

Now you have given the right ownership to your files, we now have to deal with the fact that much of your existing configuration will be looking for profile and other content from /Users/gerrysweeney, and the way we deal with that is by creating a symbolic link. In the terminal window you should issue the following command to delete the newly created home folder on the SSD drive that we no longer need.

sudo rm -rf /Users/gerrysweeney

Now you should create a symbolic link to map the expected home folder location to the relocated folder on the new 2TB drive. To do this you should issue the following command:

sudo ln -s /Volumes/Users/gerrysweeney /Users/gerrysweeney

You should do this for each account you have relocated. You can double check this operation worked by issuing the following command:

ls -li /Users
which should show you something like this...
total 8
 135869 drwxrwxrwt  13 root   wheel  442 13 Oct 20:22 Shared
 329606 drwxr-xr-x+ 13 admin  staff  442 14 Oct 10:18 admin
1056113 lrwxr-xr-x   1 root   admin   27 14 Oct 10:17 gerrysweeney -> /Volumes/Users/gerrysweeney

You can see that gerrysweeney is pointing to /Volumes/Users/gerrysweeney

The next thing we need to do is recover your applications. You have the option of simply re-installing them all but thats a right royal pain, I found this worked really well and mostly re-instated everything for me.

Get your original 1TB disk and using the Disk Copy Station connect to the computer via USB, you should be able to see this drive in finder. Make a note of the volume name for the drive – in my case this was “Macintosh HD”. In order to recover the applications, you basically need to copy all of your Library and Application Files to the SSD. To do this issue the following commands: –

  ditto -v /Volumes/Macintosh HD/Library /Library

  ditto -v /Volumes.Macintosh HD/Applications /Applications

  ditto -v /Volumes.Macintosh HD/Developer /Developer

Now with all that done, you should eject the original 1TB HDD using Finder and you should shutdown and re-start the computer. While re-booting you can unplug the Disk Copy Station, you should not need it any more.

At this point you should be able to log in using your original account – in my case this was “gerrysweeney”. If everything worked out OK then you will now have a working system, your desktop, applications and settings should all be restored and in the same state as they were before you started.

Set aside a day to do this, its a pain, there is a lot of fiddling around and there is a lot of waiting for stuff to copy. In the end though its a worthwhile mod that Apple does not want you to do.

Enable TRIM

UPDATE: I had found this after I finished the article and Anton pointed out in the comments I should include this information because it is important. Thank you Anton.

In order to maintain the healthy state of your SSD and prolong its life you need to enable the S.M.A.R.T features and make the OS and the SSD Drive communicate using the TRIM commands. This basically allows the OS and the SSD drive to play nice and help prolong the life of the SSD by minimising erase cycles, the OS simply informs the drives that blocks are no longer in use. Doing this is easy, you can simply install a piece of software called Trim Enabler which takes care of this for you. If you want to know more about TRIM you can read this wikipedia article


trim1  trim2

IMPORTANT DISCLAIMER

DO THIS AT YOUR OWN RISK. I HAVE PROVIDED THIS ARTICLE IN THE HOPE THAT IT WILL BE USEFUL FOR OTHERS. HOWEVER, YOU SHOULD KNOW THAT OPENING YOUR COMPUTER INVALIDATES ANY WARRANTY YOU MAY HAVE AND WHILE THIS APPROACHED WORKED FOR ME, IT MIGHT NOT WORK FOR YOU AND IF IT ALL GOES WRONG FOR YOU I CAN NOT BE HELD RESPONSIBLE. THERE ARE LOTS OF DELICATE AND SENSITIVE ELECTRONICS THAT ARE EASILY DAMAGED IF YOU DO NOT HAVE EXPERIENCE HANDLING THEM – PLEASE ONLY DO THIS IF YOU ARE CONFIDENT IN YOUR OWN ABILITIES

Did someone get fired for buying SOA?

I heard once that someone got fired for buying SOA. Urban myth? yeah, probably, but if anyone that worked for me “bought” SOA I think I would probably fire them too. Why so emotional you must be thinking – get a life!.  Actually, before going into the SOA question specifically, there are many things packaged up in the IT industry that are “for sale” and many more people are “sold” these packages. Did you ever hear the term “shelfware”?  This term is used to describe a piece of software, often very, very expensive software, that was purchased by an organisation but never deployed into production – in other words it was left “on the shelf”.  This is a pretty bad situation for the customers and suppliers to be in and I have even heard sales people tell excitable stories about how they have closed a big deal that just ended up being shelfware. The excitement comes from the fact that the vendor received all of the money for the software but suffered none of the headaches that can be associated with implementation or deployment.  Deplorable and downright dishonest behaviour but the software business can really be like that.

So, why not buy SOA, it sounds very useful and could revolutionize my company’s business systems.  Well here is the thing, SOA is not something you can actually buy, it’s a principle, I say again, it’s a PRINCIPLE.  just for clarification, A PRINCIPLE is a law or rule that has to be, or usually is to be followed, or can be desirably followed (thank you Wikipedia: http://en.wikipedia.org/wiki/Principle).  Think of it this way, imagine for a moment walking into a surgery saying to a consultant “how much will it cost to make me honest?”, that would be silly right?  You can not buy a principle, you principles are part of you, your personal DNA, a definition of who you are, and on a personal level most people understand this. Businesses have principles too and sadly, in business some people are vulnerable to persuasion – there are always people who will sell you something you desire. It’s funny, when I used the analogy of honesty I thought I would Google to see if anyone is willing to sell me some “honesty” and sure enough, in less than a minute I found this site: http://www.free-hypnosis-mp3-downloads.com/product.php?productid=23.  I am not going to make any judgements about what this site offers for $39.90, if it has value or if it will work, I will leave you to draw your own conclusions – hopefully though can see my point.  Buying (or being convinced to  buy) SOA is the IT systems equivalent of doing just that!.

The problem is, just like the honesty peddlers that exist in the world, there are companies that will “sell” you SOA, that’s right, for a mere $Xm you can buy the SOA principle from a vendor and transform your business systems – and if you want to believe that, go ahead and Google SOA and you will find plenty of willing SOA peddlers.

SOA has had a lot of bad (and good) press, have a look at this entertaining site (http://soafacts.com/), it shows just how anti-SOA some views are, this is the cynical end of SOA and many of the points in here could easily have been written by people who got fired for purchasing SOA.  Actually, the situation is a lot better now than it was five years ago because many more people understand that SOA is just a set of principles and not a product – in other words SOA is something you do and not something you buy.

I am a fan of SOA principles, but don’t much like the prescription of technology standards to deliver these principles upon, so here is my attempt to provide a more positive outlook on SOA facts (in the context of SOA being a set of principles only): –

  • Loose coupling for system design is flexible and powerful, this works at all levels of a system.
  • SOA principles have nothing to do with technology standards. Unlike some vendors would have you believe, SOA and SOAP for example are not synonymous, it just so happens that SOAP (which is a standard and not a principle), like numerous other standards are useful in building service oriented systems. Service orientation is one of the key principles of SOA.
  • SOA is not an all or nothing, pick from it the principles within which your systems are designed
  • SOA principles are really targeted at systems designers, architects and software developers and not aimed at business people as some assume. Instead, the systems that are built on SOA principles put the business people back in control of their own systems because they are easier at understand at a high level.
  • SOA is only a name, the principles of SOA existed well before SOA was coined as a name.
  • SOA was born as a way of describing specific technology standards in a business context. However, SOA has evolved to become a term that describes the principles, with the specific technology standards being disconnected from the principles – at least for those of us that truly understand that one can not purchase SOA

SOA is not the perfect set of principles for every situation, you have to be able to pick and choose which principles you apply.  I would use the analogy of religion – as a general rule religion is a good positive thing for society, it helps with social order, community and leadership but taken to an extreme can lead to radical views and totally unacceptable behaviour by often vulnerable people that follow extreme interpretations of those principles and beliefs. I suppose now I think about it, you could look at buying a global SOA solution from a single vendor as an indoctrination into a cult.

I really feel the need to go into the detail of SOA right now but I am conscious of the fact that I have already written more than enough to bore most readers, so instead if you do want to know more, there is a good explanation of SOA on Wikipedia: http://en.wikipedia.org/wiki/Service-oriented_architecture

Just to sum up – take look at the principles of SOA, if you like the idea of them and can see how to use them to the advantage of yourself or your organisation, adopt the principles and start using them in your designs – you don’t need to go to your boss and get sign-off for a SOA project, your boss won’t even know or care – but when the systems start to deliver real value and results, then your boss will start to care because he will feel compelled to go to his boss to get sign-off for a pay rise and a bonus for you as a reward for the magic you are able to do – just believe! And even if that does not happen – at least you will end up with a flexible and adaptable system.

What on earth is Enterprise Architecture (EA) anyway?

A subject that popped up a few times at work was Enterprise Architecture and although we seemed to have some expert opinions (yeah right) about it, somehow, no one really had a clue what it was.

In order to find out what EA actually is in practice, I went along to the Enterprise Architecture Summit 2010 organised by Gartner.  The event was held on Monday 17th May 2010 in the London Lancaster Hotel, in – you guessed it – London.  The event was well organised and had some good content.  The Gartner team were professional and very helpful if not a little by-the-book.   I went to this event to find out exactly what EA is because I really did not have a clue.   As it turns out I was not alone, some of the EA vendors that where in the vendor showcase were not exactly sure either,  each seemed to have their own interpretation.  One thing for sure was my initial thoughts on what EA is were pretty incorrect.

Sitting in the various Gartner lead presentations it became very apparent that the focus was much more on “Enterprise Business Architecture” which is another way of saying “strategic planning for IT” and much more appropriately describes EA – in my mind at least.   It covers the areas of business process and data modelling but at a non-detailed (or non technical)  level.  There is a lot of cross-over between what EA seems to be and ITIL V3 around service portfolio and service strategy, at least as far as I could tell from my experience working at Hornbill.  The main objective behind EA appears to be to allow large enterprise businesses to model the “current” and “future” state of their business systems in order to establish the gaps which are then used to define the strategic projects that need to be initiated in order to get from the current to the future state – all in support of the overall business strategy.   In SMB type organisations this normally happens in the head of the visionary driving force, often the CIO or CTO, but when the business gets to a size where a single person simply can not do this for the scale of the business EA steps in.

The EA tools that vendors seem to be offering are essentially repository based planning tools, designed to track versions of artefacts, create or store process and data flow diagrams which are all used to build models of how the business should/could work from a systems and operational process point of view.  I was very pleased to see that open source was on the agenda in part, and Wiki’s were talked about as a tool that is often used with EA teams.  I am a fan of Wiki technologies for documentation projects, and EA really is on the face of it a big, cyclic, configuration managed documentation project.  CMDB’s could be used for this purpose too but in practice a great deal more document management capability would need to be available to make most CMDB solutions a viable EA planning tool.

Despite what generally seems to be thought, EA does not really relate to technology in any direct way at all but it seems to be given to technologists within large organisations, many (but not all) of the people I spoke to their had a technology background but were involved in EA initiatives.   As one of the vendors put it beautifully “People think EA is directly related to technology because of the word Architecture, bit it’s actually all to do with strategic business planning that involves documenting and controlling requirements for operational systems, that often (but may not always) get deployed as technological solutions.

EA is all about business planning and creating/maintaining documentation to define what “is now” and what is “to be”. If you consider what a product manager does for a software product, this is really what Enterprise Architects do for internal business systems.  EA’s define and plan roadmaps, document them but most importantly communicate over and over again what “is now” and what is “to be” in the future.

There was an abstract presentation that was using biology and the development of biological organisms to relate to systems evolution.  It was quite long-winded and I think many people in the room lost it half way through, I was standing because the presentation was full and it was hard to stay there for the hour.  The basic message was, rather than designing a whole system from the top down, why not create an environment where the overall business system evolves by localised innovation. Yeah I thought, SOA to the rescue! A reasonable message but surely there could have been a more efficient way of saying it.

A senior analyst from Gartner in a keynote presentation stated that their recommendation for any organisation undertaking a new EA initiative is to not buy any EA specific tools but instead use Office tools (PowerPoint, Visio and Excel or the like) for their initial planning work – it’s all about requirements gathering, definition, management and communications back to stakeholders – for the first 18 months at least. The vendors at the event loved that statement as you can imagine 🙂  Another good point they made is “the role of an EA is really to facilitate rather than design”,  the design is an operational function, not one that the EA office should be involved with.

Having spent the time to look into this I came out the other side still not being 100% sure that I fully get EA, but I did figure out it had nothing more than the potential to be influential in relation to the execution of IT projects. For me though, EA is off the agenda for now.

If you know better in relation to EA, please do tell…