Wednesday 16 December 2015

The Magical Progress Fairy - are you using one on your project?

Some time ago IBM had an advert featuring a 'Universal Business Adapter' (YouTube here) which would magically connect anything to anything.

Not surprisingly, everybody wanted one. However not everybody got the joke that it didn't actually exist - you could do everything it did, but you would actually need to build it using SOA/ESB/Integration tooling. (If you do actually want to build one, start here).

Another thing that everybody seems to want on their project is the Magical Progress Fairy. A lot of people think they already have one . . .


What is a Magical Progress Fairy?

A Magical Progress Fairy (MPF or latin: hopeus overexperiencus) is a mythical creature that you invoke when your project is not going as fast as you want it to, you're behind and you're likely to miss deadlines. It magically improves your productivity, vitalises your team, eliminates any problems and gets you right back on track - without you making any changes to your approach at all!

I don't do that . .

Perhaps you don't - but do any of these things sound familiar?

"We only made 20 story points in our last sprint - to get back on track we need to make 30 in the next sprint"

So how is that going to happen? What are you actually going to do to improve productivity by 50%? A lot of the time we hear phrases like 'Everybody buckle down', 'Let's all really concentrate for this one' or 'we all need to work harder'.

On the other hand, everyone is already working hard and concentrating - and we need to keep in mind the Agile principle that progress should be sustainable indefinitely.

"We had a bad sprint last time - a lot of things came up to disrupt us"

And these won't happen on the next sprint? The internet won't drop out? A team member won't get sick? There won't be an unexpected bug in the tooling / database etc?

"We weren't experienced enough on the technology before - we're better now"

Maybe - but can you prove it? Are you sure you now know everything you need to know? What else is around the corner?

All of these approaches (some might call them excuses - I would never do that) rely on the Magical Progress Fairy to get you out of trouble. Magically progress will improve, mistakes will not be made, people will become more productive and disruptions will not happen . . .

OK, maybe I might need a Magical Progress Fairy - but what else can I do?

There are a number of things you might try but the first is to be realistic about what you've already managed to do and what you will be able to do in the future:

Accept reality and calculate your project velocity

Project velocity is a measure of how productive your team is, in your environment, working on your user stories, using their skills in the technology and method chosen for your project. It's not a single one of any of these, a measure of how 'good' the team is - or an individual. All of the project factors have a part to play.

To calculate your project velocity, simply divide up how many story points you actually managed to get done in the previous sprint by the number that you planned to deliver in that sprint.

Example:

We plan a sprint of 2 weeks (10 days). When we did planning poker we decided that one story point was going to be one 'ideal day'. We have a team of 5 people, so that gives us 50 ideal days, so 50 story points to plan with.

At the end of the sprint we found that we 'only' achieved 32 story points.

So, our velocity is 32 / 50=0.64. Note that it is not '1.0 - except for Bill had a dentist appointment and Sarah's PC needed a new hard drive, we spent time planning the sprint - and we used 2.5 person days for 1 morning of playback to the business'

Of course, you can have a velocity greater than 1.0. 

If you'd finished all the user stories in 9 days - people do get ahead , then  you'd have had a velocity of 50 / 45 or 1.11 (I know it's recurring but hey . .)

Once you know your velocity, use it to plan further sprints realistically

So, if your velocity was 0.64 and you have another 10 day sprint - then plan for 50*.64=32 story points

If it was 1.11 then plan for 50 *1.11=55.5 story points (if your planning poker has a 0.5 card - otherwise it's 55 - no quarts in pint pots).

Don't invoke the Magical Progress Fairy

If you planned 50 story points and you made 32, then that is what you made. No ifs, but buts. That's all you proved your team can make. Why will next time be any different?

Don't extend the sprint

'We'll be finished if we just have another day / 2 days / week / month . . '. One of the advantages of the sprint system is that it shows you 'point in time' progress with nowhere to hide. Either the software works or it doesn't. Software is often 95% finished for 95% of the time you ask the developer 'how it's going'

Finish early? Shut down the sprint, calculate velocity and start the next one

Congratulations - you made a velocity greater that 1 - but that just shows your estimating was on the low side vs reality. Now you know that, go ahead with that knowledge.

My velocity has changed after the next sprint - what do I do?

So, your velocity after sprint 1 was 32. Your velocity after spring 2 was 44. Great! This isn't the magical progress fairy. Something was different - maybe your team did get better, or the dev server didn't crash or there wasn't a big queue at the coffee shop.

So, use your new velocity to plan the next sprint- that's now our up to date measure of reality.

If you have put real interventions in e.g. given people faster computers, given them a copy of production data to test with etc, then this will allow you to measure if this made any difference.

A quick quiz - which of the following might actually work? 

No prizes except maybe getting your project back on track . .
  • Work evenings and weekends
  • Increase the project duration by adding more sprints
  • Adding more people to your project - see The Mythical Man Month
  • Cut the scope by removing user stories
  • Yelling at the team more - motivation is the key
  • Re-prioritising user stories and revisiting what might be acceptable as a minimum viable product
  • Re-plan the sprint every day: hey, why not replan every hour?
  • Concentrate on the happy path and make some exception paths into a manual activity e.g. 'If paying by credit card, click 'next'. If paying by cash or check/cheque, please visit one of our high street stores'
  • Add more RAM, CPU or disk to the development system - maybe - but is this the real issue?
  • Cut/eliminate testing (especially NFRs) - let the users do it in the beta
  • Try different sprint lengths - overheads like planning and playback can eat into the time. Beware long sprints as this reduces agility and means that progress can be obscured.
  • Re-estimate everything over and over until we find an estimate we like that fits the plan.
  • Ignore technical debt - we've gotta hit that deadline - hardcode everything!
  • Calculate your velocity, use it to plan further sprints, bite the bullet and accept reality.

Finally, Beware the 'hidden hours' of evenings and weekends working - especially when you don't know about it!

Remember we planned for a 10 day, 50 person/day sprint? If 4 people worked the weekend, it's actually now a 58 person/day sprint. This may give you more development output but it's skewing  your velocity!

It means that in the next sprint, you're now assuming that 4 people will work the weekend - and the same going forward.

If you plan for an 8 hour day and 2 of the team actually work 12 hour days all the way through 'to get it done and show dedication' - they're making a mockery of your velocity calculations.

Watch out for people staying late, doing work at home in the evenings of weekends - if they do it, you need to take account of it otherwise they're becoming your Magical Progress Fairy  . .

Thursday 10 December 2015

El Capitan Time Machine on NAS running very slowly?

So I upgraded my Macs to El Capitan and everything was rosy - with the exception of Time Machine.

Time machine backups to local USB drives (Seagate 2TB if it makes any difference . .) seemed to work fine, but network backups to a Synology DS415Play NAS were getting 'stuck' on the 1st few MB - and staying stuck, seemingly forever.

The symptoms were visible in the 'progress' of Time Machine in the status bar:

The 'backing up' would stay in single megabytes.

After checking the network etc, I then tried Time Machine preferences:
Originally I had my NAS time machine connected as the 'auto discovered name' i.e 'AndyNAS'.

I tried the 'add or remove backup disk' option to remove the connection and re-add it. It didn't seem to help - I got the same problem.

I tried connecting directly to the Time Machine drive using Finder and for no reason that I could think of, used the numeric IP address to connect to the NAS rather than the name. This seemed to work fine and the Time Machine share was visible and seemed to be working normally.

Finder->Go->Connect To Server



In a last ditch attempt, as I have my NAS on a static IP on my LAN (192.168.0.100), I tried removing the original Time Machine NAS connection using 'Add or Remove Backup Disk' and then tried connecting using the 'dotted quad' 'numeric' IP address as shown above - and everything started working again!

Not sure exactly what fixed it - could be any of the following:
  • Adding and Removing the Backup Disk / NAS connection in Time Machine Preferences
  • Doing a direct afp connect to the NAS Time Machine share in Finder
  • Using the 'dotted quad' / Numeric IP address rather than the name
  • Pure luck  and the 'turn it off then on again' effect - but it did fix 3 out of 3 of the macs I tried it on

To be fair, I'm not that bothered - it's working again, and for all three Macs (work, personal and wife's) backing up via Time Machine to the NAS after the El Capitan upgrade. It's also encrypting fine.

As a side note, I didn't have to re-create my Time Machine backups - as long as I re-entered the encryption password then it 'found' the old backups and carried on as before.

As usual, this worked for me - your mileage may vary but it might be worth a try.

***Additional***

After an interesting dialog box of 'Time machine has checked your backup - it needs to backup from scratch' (effectively) I found that having to back up 150GB or so was taking a long time.

If you check 'console' and search for 'mdworker', you might see a number of entries, especially starting with the word 'deny'. Apparently, this isn't helping your time machine speed!

Believe it or not, the fix for this is to start your Mac in 'safe mode' - then restart again normally.

To start in safe mode, shutdown your Mac. Then start it up. Immediately after the first 'bong', hold down the shift key. When you see the startup screen, you can release the shift key. If you're successful, you'll see 'safe mode' written on the screen somewhere.

(Apple guidance here https://support.apple.com/en-gb/HT201262)

After you've started up in safe mode, give it a minute or two to finish loading everything then shut down again.

Now check your time-machine backup speed - assuming you have a decent network speed (I highly recommend gigabit) you'll see it fly along . . .

Resetting Mac SMC and NVRAM / PRAM

Having just applied Apple's latest update to El Capitan and temporarily lost my bluetooth connection, I thought I'd post this as a reminder to myself if nothing else . .

(My bluetooth was fixed by resetting the SMC)

***EDIT***
Remove any devices e.g. USB/Thunderbolt and try a reboot first: I tried recently to reset as my bluetooth had died again. Resetting with two displays plugged into the thunderbolt ports didn't work

See also here https://support.apple.com/en-us/HT203646

Also, for bluetooth, try deleting the bluetooth plist in /Library/Preferences
***EDIT***

Resetting the NVRAM / PRAM

  • Shut down the Mac completely (not just standby)
  • Power on the Mac
  • Immediately after the startup 'boing', press and hold Command, Option, P and R until the Mac restarts and you hear the second 'Boing' (yep, this is a finger stretcher!)
  • Apple's link here  https://support.apple.com/en-gb/HT204063

Resetting the SMC

(Note that this is for Macs with non-removable battery - check Apple's notes first)
  • Shut down the Mac completely (not just standby)
  • Make sure you have a power supply plugged in
  • Press Shift, Control, Option (on the left side of the keyboard) and the Power key all at the same time
  • Release them all at the same time
  • Apple's link here https://support.apple.com/en-gb/HT201295
(BTW 'Option' is the key that is marked with  'alt' on the top and a symbol on the bottom, at least on UK keyboards - see also https://en.wikipedia.org/wiki/Option_key)

Wednesday 9 December 2015

BPM Good Practice, Leading Practice, 'Best Practice'

Notwithstanding the 'Lord Wessex Effect' and whether good practice is good for your particular implementation, there is a lot of good practices that are worth considering.

The following might be useful - one of the authors you might recognise :-)

https://developer.ibm.com/bpm/docs/best-practices-recommendations/

Tuesday 8 December 2015

SQL JOINs - a handy visual representation with examples

Found this today on codeproject.com, written by C.L. Moffatt: A really useful and visual guide to all the different types of SQL JOINs

If you need to know the difference between INNER JOIN, LEFT JOIN, OUTER JOIN, RIGHT JOIN etc etc then try here:

http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins

It even has a handy 'print out and put on the wall' graphic! Great stuff!

Monday 7 December 2015

Running an IBM BPM saved search from the REST API

This may seem obvious to many people, but it wasn't to me, so:

To run a saved search in IBM BPM from the REST API the URL is:

http(s)://<host>:<port>/rest/bpm/wle/v1/tasks/query/<SavedSearchName>

To restrict the size of results add ?size=<size> at the end

Sunday 22 November 2015

Agile: Is there always a user in your user story?

Agile, User Stories - go together like <insert favourite cliche here> and for user facing (typically GUI) interactions, they work very well.

My definition of a user story (many others are available) goes like this:

AS <A user or user role>
I WANT TO / NEED TO BE ABLE TO <Do something / Perform a function>
SO THAT I CAN <Achieve a result>

Simple: WHO, WHAT, WHY (you can also add WHEN if needed, but avoid HOW)

An example would be:

AS a customer service agent
I NEED TO BE ABLE TO Update a customer's address
SO THAT I CAN keep the customer's data correct when it changes

The most common omission is the WHY: In my book, if you can't write out the why, then why is the user story in the backlog anyway?

The second most common is the WHO. As in the following 'User Story'

'We must be able to keep the customer's address current' or (even worse in my opinion)
'The system must . .'

What's wrong with these?

For the first one, it misses the role or person who will do it. This is more important than many people realise. It can show up most often in the end-of-sprint playback and be missed by the entire team!

If the playback is done by one of the developers and the dialog goes something like this: "Here's the address change screen, (click, click, scroll, launch-of-developer-tooling) and you'd click here then overwrite the database contents here . . ." you've found your problem.

What they've actually built is this:

AS a developer
I WANT TO Demonstrate the updating of the customer database
SO THAT I CAN get my story points, mark the story done and move onto the next iteration

Compare and contrast with the actual user story above. Why isn't the customer service agent doing the playback? Because they haven't got a logon? Because they haven't been trained? Because the code is isolated and doesn't have dependencies (like a link to the LDAP where their userid is stored). In that case, in my opinion, you haven't done the user story because the user cannot actually do what they stated they wanted to do in the user story.

But hold on, you say, this will all be sorted out in PROD, won't it? We're still in DEV! We'll fix that before go-live!

Will you? When? And who is going to do it? You've claimed your story points, your velocity has been updated and as a UK politician famously wrote 'There's no money left!'

I talked to a Business Analyst who is also responsible for training users and she asked a very good question: "Where in agile does my training material get written? All this 'don't document' in agile means I can't write a manual / make a video / build help screens."

At this point, I referred her back to the idea of the user story - and there are two options.

If the user requires a training course, documentation and a trial period before they can 'update the customer details', then that's what they need. That's their user story. Part of what seems simple may seem like it's turning into an epic, but that user cannot achieve their results without the resources they need. If the user can't use it, why write it? So, you need the trainer as part of the agile team (in the same way as you need developers and testers) and the story is only 'done' when you have all of the materials ready to go.

Alternatively, you could say

AS the training manager
I NEED TO BE ABLE TO provide a video / written / CBT training course for the end-users
SO THAT I CAN enable new users who were not part of the project originally to learn how to use the system

And yes, this needs to go in your backlog.

The second 'user' story form I have issues with is this sort of thing:

"The system must log all entries and exits of every call to the mainframe"
"The system must audit all entries into the general ledger table"

Really? Why? And more importantly 'WHO CARES?', I'm not being facetious here, but asking 'who cares?' (similar to the 'so what?' technique) really drives out why the story is here in the first place. If no-one who is a user of the system cares whether is does it or not, then why do it?

The two examples above are typical 'no-user requirements' that are so often documented in a 'different way' but I encourage you to think about who actually cares that they are done. (Try omitting them from the backlog and see who screams!) Once you have that person, you have your user story.

For example:

AS the technical support person
I NEED TO BE ABLE TO see every entry and exit of every call to the mainframe
SO THAT I CAN answer the question "Did transaction nnn get sent to the mainframe?' when debugging a live incident at 2am.

AS the person in the company who is being audited for a legal investigation
I NEED TO BE ABLE TO search for and find all transactions involving company nnnn and prove that they could not have been altered after they were performed
SO THAT I CAN avoid losing my job or even going to jail!

See how that focusses the mind? Also see how this builds your test cases? If your playback developer says 'look, here is the audit text file we built - you can see it in this text editor', is that the same as someone desperately searching 10TB of unstructured data with 'update any' in the file permissions and worrying about their liberty?

So to some up (and this is just my 2c as per usual!)


  • If your user story can't explain the 'WHY', then 'As a product owner, I want to relegate all stories without reasons to lowest priority so that I can spend my budget on ones that add value'
  • If your user (not you!) can't do what they wanted to do in their user story, you haven't completed the story. If they need training or help text, that's what you need to give them.
  • If there isn't a user in your user story, who cares if you do it or not? And who's going to say 'done'?

Wednesday 18 November 2015

IBM BPM - how to find BPDs with Autotracking set to 'On'

If you're familiar with IBM BPM, you'll probably know about the Autotracking feature in business processes. The issue with this is that it tracks a LOT of data into the performance data warehouse (PDW) which might not be what you want to do.

In earlier versions, whenever you create a new Business Process Definition, the 'Autotracking' flag was set to 'on' by default. In later ones (8.5+ I think?) this default was set to off.

If you've been running IBM BPM for a while, you probably have a lot of snapshots deployed. You might want to find out which of your deployed BPDs have the Autotracking flag set to 'On' so you can make a conscious decision as to whether that's correct and if you need to make changes.

If you have DB2 (I don't know if this works for Oracle or SQLServer) you can use the following trick:

select
from lsw_bpd 
where data like blob('%<autoTrackingEnabled>true</autoTrackingEnabled>%');

(#update: This used to reference 'ls_bpd' - thanks to Dave Hay for spotting this!)

LSW_BPD is the table where the BPD data is stored in BLOB format, so it's not immediately readable. What the above does is to search all of the BLOB data for the Autotracking flag, but does it by searching for some BLOB data within the BLOB column.

(If you want to get the snapshot names, process app names  etc, you'll probably need to link to other tables).

Please note that this is a 'quick query' read-only hack and you should most definitely NOT update the table in order to change the flag. The correct way to do it is to identify the Process App, find the BPD in Process Designer, change the Autotracking flag, create a new snapshot and re-deploy.

No warranty given or implied, but it saved me a lot of trawling through Process Designer!

Monday 16 November 2015

Once you're Mac, do you ever go back?

Having 'moved to Mac' (from a corporate Lenovo Thinkpad W510 with Windows 7 to a BYOD Macbook Pro 13" and then recently on to a company Macbook Pro 15") I've noticed that I've become something of a 'Mac convert'.

Obviously not everything's perfect, but I thought I'd take time out to list some of the pros and cons I've found over the last year since I switched. As always, this is a personal view - your mileage may vary!

Battery life

Depending on whether I'm using it solidly or not, I can get just under a working day out of the 13". What about the 15"? Well, I've been running Windows under VMWare too much to make a realistic comparison and I've also been sitting at a desk with it so it's usually plugged in.

I'm not sure if it was because my particular Thinkpad was a 'workstation'/desktop replacement, or because the battery was getting old, but I was down to easily less than one hour of battery life.

It seems to be a 'thing' that Mac users don't immediately search for power on entering a meeting . .this is strangely liberating.

So how much of this is the hardware? Well, let's just say that if I'm running VMWare with Windows on it, my battery life drops considerably: this may well be down to 'constant updating' or 'corporate cruft' though - see below.

Size, weight and Retina screen.

Just being able to work on the train/plane etc with a decent screen has been great. I appreciate that I have a 'big n clunky' PC laptop, but for example on a Southwest Trains 'airline' seat, I couldn't even open the screen fully.

Weight: Add the weight of the thinkpad and the power 'housebrick' together and it's a lot to lug in a backpack. With the 13" Mac, I  kept thinking 'did I remember to pack my computer?'

Startup time, rebooting and 'resume from closed'(suspend or hibernate)

I have a startup time of easily less than 20 seconds, often a lot less - but how often am I inconvenienced by startup time anyway? On Windows, quite often: the 'you must now reboot' seemed to be a constant thing. I'm convinced this is due to badly written software more than anything Microsoft actually did to Windows. I hardly ever seem to reboot my Mac; and because of the battery life, I don't every turn it off/shut it down.

The most useful thing is the 'resume from closed' time i.e. instant! You can tell people with Macs - they walk from meeting to meeting with their computers closed'. The majority of Windows users do the 'balancing my laptop with the screen open in one hand and my coffee in the other' walk. This is because resuming from suspend can be time consuming but also because of the danger of the dreaded 'hibernate'. With mine and a large number of others, once Windows hibernates it can take a good number of minutes (easily over 5 - sometimes 10) for it to 'come back'. It's usually quicker to force the power off and then reboot.

From a Windows point of view, changing to an SSD in my Thinkpad really made a huge difference to the startup time, but still getting to actually being able to open eMail or a web-browser definitely took a long time.

'Corporate Cruft' and 'bloatware'

By the time I abandoned Windows as the 'main' o/s on my corporate machine, the amount of 'hassle' things like virus-checkers, auto-updaters, firewalls, software-scanners, asset checkers, push-updaters etc was really getting to me.

I actually wiped the 'corporate image' shipped with my Thinkpad and installed Windows 7 from the Microsoft DVD. The boot time of this was really quick. And guess what? 'Base' Windows can do things like have a firewall, connect to the network - or just run.

But why do manufacturers think they need to add more? Nearly every Windows PC I see seems to have an additional 'manage networking' software install, or a method of managing the screen resolution or something. Why? Windows seems to do it fine?

It's also that the 'corporate cruft' seems less intrusive on the Mac - I don't know why. I have to run a virus checker, a 'corporate app store', a 'register my mac', a non-Apple VPN client etc, but they 'just work' in the background. There is never that 'lock up' of the CPU spinning up to 100% and locking out the desktop. Whether this is the Unix-Like nature of MacOS having better control of background processes or they way the software is written, I don't know.

Constant Updating

Every piece of software on Windows seems (to me) to have its own way of updating. Also, every piece seems (to me) to be constantly looking for updates, or scanning for updates, or something like that. The disk light never seems to stop (typing this I've noticed my Mac doesn't have a disk light . .).

OK, not everything in the Mac garden is lovely - Firefox is a 'constant updater' and MS Office has its own update scheme, but things in the App Store update when I ask them to. And there doesn't seem to be 'patch Tuesday' - although from a security point of view, I'm not sure if this is good or bad.

Also, most updates don't seem to end with the tiresome 'to complete this installation, please reboot your computer'. Well, when I say 'most' there are still the usual outliers.

Bits and Pieces / Accessories - and 'standard' ports.

'Can I borrow your VGA adapter?' 'Any chance of buddy-breathing your power?'
The more people have Macs, the more you can borrow 'bits' off them when you've forgotten yours. It's not like the 'which one do you have? Oh no - this is the different-sized power adapter' conversation, even amongst PCs from the same manufacturer.

And did I mention the relative size of the power supplies? My Lenovo one is huge and very heavy. OK, I have a 'light' travel one but then I get the 'the processor will not run in full power mode' message  . 

It's not all good though:
VGA and Ethernet - you need to carry separate 'dongles' - and they're £25 each! OK, we have HDMI but conference projectors and meeting rooms don't 'do' HDMI all that often. Also, I can't remember that last time I needed a wired ethernet connection - although 1GB is quicker.

15" (85W) vs 13" (60W) Power supplies. I forgot my 13" Power supply on one trip, so I bought another (see 'Apple Store' below). I now have one in my backpack and one at my desk at home - great! Now I get a new 15" Mac. I can use the 85W with the 13" but not the 60W with the 15"! Arghh! When I bought a spare, why didn't the guy say 'you know what - get the 85W one - then that will power any Macbook pro"

Kensington locks - there is no slot for that, so you need a 'special one'.

The Apple Store

Two things here. The first is the 'oops, I forgot to bring my aaaaaa' or 'my bbbbb just died'. If you need an Apple accessory, there's usually an Apple Store / Apple reseller / Store that sells Apple 'bits' near to you that can sell you one when you need it i.e. right this minute.

I was in Woking, UK. I hadn't charged my Mac the night before. It was 10:00am and I had 10% battery left. I looked it my backpack and I'd left my power supply on my desk at home! Panic?

I walked into the shopping centre, bought a 'spare' power supply from the reseller and I'm back up and running at 10:30am. I can't do that with most PC laptops.

Secondly, I've got a presentation at 12:00 and it's 10:10 in Edinburgh. My Mac won't power up. Paaaniiicccc!

Run the full length of Princes Street to the Apple store and throw myself on their (and Applecare's) mercy. In and out in 30 minutes with Mac debugged (reset the PRAM and run the disk diagnostics if you want to know - I didn't know how to do that!) and ready to go. They even offered to call me a taxi back to the office. Again, I couldn't do that with a PC. I'm not sure about walk-in physical repairs but I've had good experiences getting iPhones fixed on a 'walk in'.

Software Compatibility

The main 'downside' to Mac ownership. Want to run MS Visio or MS Project? Good luck with that! There is a lot of software which just plain won't run as there is no Mac version. VMWare or Parallels is your friend here, but you will also need to buy a Windows license and full-retail is expensive!

The other 'compatibility issue' is when someone gives you an NTFS formatted USB drive and says ' can you put the file on there?'. Macs seem to read NTFS OK, but writing is a no-no unless you have additional software to enable it.

Built-in functionality

People often praise the Mac and MacOs for the built-in functionality of the operating system, but similarly others curse things like iTunes and Photos for the way they work and 'take over' your files. Things I really like are:
  • Time Machine: Fit it and forget it - saved me LOTS of times. Not only does it back up, it keeps multiple versions. If the backup disk/NAS is not available it 'queues the data up' until it is.
  • Spotlight search: I just use this all the time - I don't use finder all that much. Interestingly, I could never get on with the Windows search - don't know why

Windows 10, newer PC hardware

So, not all of this is 'Mac vs Windows'  or even 'PC hardware vs Apple'.  It's more 'Corporate Mac vs Corporate PC and Windows'. The following may mitigate some of this:
  • Windows 10 - I've not used this, but I've heard good things about it
  • SSDs - these make a HUGE difference, and I mean HUGE. If your PC has 'spinning rust' then this could be the best present you give yourself
  • Newer hardware with better battery life, size and weight - Again, I've only ever used 'workstation class' Laptops - having said that my 15" Macbook pro is very portable and very powerful at the same time.

Sunday 15 November 2015

Car Analogies . .

Whenever a group of technical people gather to discuss IT concepts with people who may not have been dyed-in-the-wool computer geeks from birth, it is mandatory that at least one of the group will attempt to explain some concept or justify a position using a 'car analogy'.

Some of these come up numerous times - I've listed a few here - please feel free to add more:

Mutually Exclusive Options and 'I want the best one':

Often there are a number of options when implementing/configuring a system. People usually say 'OK, give me all of them' or 'Whatever is best!'

Request:

'If I'm buying a car, I want metallic paint, a CD player and a Radio and an IPhone kit. I want it fully loaded so I'm not restricted - why can't you do that? Stop asking me to make a decision now'

Response:

'OK, do you want Petrol or Diesel? Do you want Manual (Stick) or Automatic transmission? 3 or 5 doors?'

Requirements Gathering and 'Just tell me what you want'

In 'traditional' projects, there is a requirements-gathering phase. Users are asked to specify the system  down to the last detail before design and development can be started. This will happen even if they are not familiar with the subject area.

The car analogy is the 'show-rooming' of requirements. A car dealer does not ask you for a huge list of things your car must have - they ask a couple of questions and then take you to the showroom.

'This Fiesta?' 'Not big enough'
'OK, this Focus is bigger' 'Can I get my dog in the back?'
'How about this Estate?' 'How comfortable are the seats?'
'Why don't you get in an try them out?'

Effectively there are a number of pre-built options the user can look at to shape their thinking. This is part of the aim of RAD, Prototyping/Blueprinting, Agile etc

Even if you can't build a prototype, borrow someone else's:
'Do you want the search to lookup options as you type like Google?'
'Do you want to sort results by different criteria like Expedia does with price, distance from location etc?'
'Do you want 'Undo' like Word and Excel?'

Maintenance, Operations and Support

This one should be obvious - if you don't maintain your car, it will break down. Software on the other hand doesn't need maintenance - code doesn't 'wear out'. Or does it?
  • Security vulnerability - needs to be patched
  • Bugs found - needs to be fixed
  • System grows and needs performance tuning and housekeeping as the original configuration is no longer suitable as the user/data load is now much bigger than it was originally configured for.
  • Release goes out of support - this is the 'can't get parts for that any more' analogy.

Training, especially for new releases:

Request:

"The software should be easy to use - cars are easy to drive"
"I learnt to drive in a Fiesta. I can drive a Mondeo without learning to drive again"

Response:

"How long did it take you to get your license? Did you pass 1st time?"
"Can you drive a car and a motorbike/HGV (truck) / PSV (bus)? Did you take another course?"
"Can you drive a car with the wheel on the 'other' side, in a foreign country, where you're not sure what the road signs mean without a conversion course? It's easy - all the locals manage fine!"
"Can you work the SatNav (GPS)?"
"Can you pair your phone with the Bluetooth?"
"Quick - which side is the fuel (gas) filler cap on - without getting out of the car? **"

**Handy hint; Look at the petrol (gas) gauge on the dashboard and the picture of the pump. The fuel filler is on the same side as the hose in the picture - try it!



Wednesday 4 November 2015

IBM BPM Periodic SLA Update

IBM BPM has a scheduled task called 'Periodic SLA update' which you may not even realise is running . .

Have a look here https://developer.ibm.com/answers/questions/202072/i-am-not-using-any-tracking-or-slas-in-my-process.html for more details and how to disable it if it's not needed

*Edit* this runs by default every 15 minutes, on the quarter of the hour.

DB2 not starting in Windows VMWare on 'new' Macbook

I have a new Macbook Pro 15" - it was even provided by my employer, so it's a 'free' (to me) new Macbook - yay!

So I copy my VMWare images across from my 'old' BYOD Macbook Pro 15" and fire up. OK so far, the Windows server images boot OK.

DB2, however doesn't want to start - and the error messages aren't exactly helpful. Basically, it gets an APPCRASH and Windows offers to find a solution - which it doesn't.

The issue seems similar to this https://communities.vmware.com/message/2422305

Bear in mind it worked fine (and still does) on the 13" Mac - so what's different?

Luckily, I found this: https://communities.vmware.com/thread/461857 which suggests adding the following to the .vmx config file:

monitor_control.enable_fullcpuid = TRUE
cpuid.4.4.eax = "0000:0000:0000:0000:0000:0000:0000:0000"

The technical explanation is in the link above and seems to be connected with the Haswell Processor - which might be why it worked on my 'old' mac and not on the new one.

Anyway, problem solved for now - it worked for me anyway!

Saturday 24 October 2015

The "Lord Wessex Effect" and Best Practice

People always say they want 'Best Practice'. After all, why do things any other way? Why settle for something that is second best - or maybe not even that?

Leaving aside any legal ramifications ('Good Practice', 'Leading Practice' etc) the conversation often goes like this:

"What is the Best Practice in this situation?"
"Well, you do A, then B, get rid of C and do D"
"Ah - we don't want to do that. What other Best Practice do you have?"

or alternatively:

"We do A then E, keep C and then do F. We think that should be the Best Practice - why do you not agree?"

I refer to this as the "Lord Wessex Effect", inspired by Brian Blessed as the king in the first series of Blackadder: https://www.youtube.com/watch?v=SIhBXR7I-c4

To paraphrase:

Messenger: "My Lord, news: Lord Wessex is dead!"
King: "I like not this news, bring me other news!"
Messenger (thinks first then): "My Lord, news: Lord Wessex is not dead!"
King: "Hoorah! Let there be rejoicing over this good news!"

So why does this happen? Some thoughts:

  • "Industry Best Practice" may be expensive, time consuming or disruptive - the benefits may not be worth the outlay
  • "Best Practice" in one area may clash with other standards or practices you use - this is not unusual.
  • There can be a number of opinions over what "Best Practice" actually is - again, this is not unusual.
  • If "Best Practice" tells you to stop doing what you've been doing (even successfully) for a long time, this might not be what you want to hear.

So what to do?

  • Look at what the best practice is considered to be (and compare if there are multiple claims) and find out why this is 'Best Practice'.
  • Ensure you're clear as to why this practice is better than other approaches. Ask what the alternatives are and what the downsides of those would be.
  • Ensure that the practice will work for you, with your team, in your organisation. What are the benefits to you?
  • Ensure that it's worth your time and effort to implement. How long will it take to show improvements?
There is a very easy car analogy here: Which is the 'Best' car on the market today? If you have a limited budget, a Ferrari might not best for you. Even if you have the budget, what if you have  four children? Or need to carry two dogs? Or a lot of luggage? Or fit it in a really narrow garage?

Even if you think that what you already have should be Best Practice, but others do not agree, find out why.

There are usually reasons why it's not preferred for everyone - but that doesn't mean it's not working really well for you: that's often a better result that being able to tick the 'Best Practice' checkbox.