tag:blogger.com,1999:blog-35997495402932073512024-02-18T18:54:21.729-08:00Hang on, I have a deck for that somewhere . ..A collection of eclectic thoughts, opinions, notes and other jottings - both technical and otherwise.
As per usual, all opinions are my personal ones and are not necessarily those of my employer.Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.comBlogger36125tag:blogger.com,1999:blog-3599749540293207351.post-42208271923052538062018-12-24T05:18:00.001-08:002018-12-24T08:44:01.964-08:00#livingInTheFuture: Things I couldn't do x years ago . . .I've made a few tweets with the hashtag of #livingInTheFuture<br />
<br />
This was inspired by some books I had when I was growing up which showed visions of what the future would be like in 20 or 30 years time. They showed everyone wearing spacesuit-like jumpsuits with jetpacks but also some prophetic visions such as 'huge TVs that can hang on your wall like paintings' or 'personal communicators that you can carry with you'.<br />
<br />
Even things from Star Trek have come to pass - like talking to the computer or the personal comms device (again). There are problems with this as our current technology in some areas has overtaken that in The Original Series (TOS) with Kirk and Spock - why do the need a comms panel on the wall of the ship for example? No mobiles?<br />
<br />
So, as I was paying with my smart watch at a drive through sitting in my electric-hybrid car, I thought 'I wouldn't have been able to do this a few years ago' so:<br />
<br />
It's now 2018 - what can I do now that I couldn't have done in 2017 - tech wise? 2016? 2017?<br />
<br />
(This is based on either roughly when these things were 'available to adopt' for regular people in the UK - or alternatively when I got one. Some of these may be biased towards certain vendors!)<br />
<br />
Any other favourites? Comment away . ..<br />
<br />
2018 - Unlock my hotel room with my phone without needing a key - Hello Hilton Digital Key<br />
2017 - Drive to and from the dog-walking downs in an electric hybrid car using no petrol - Hello Mitsubishi Outlander PHEV<br />
2016 - Use VR (easily) at home: Hello Sony PSVR<br />
2015 - Pay for purchases with my phone or watch - Hello Apple Pay<br />
2014 - Control the lights and heating in my house remotely using my phone - hello Homekit<br />
2013 - Log into my phone using my thumb - hello Touch ID<br />
2012 - Watch TV and play games in 3D - Thanks LG and Sony Playstation 3<br />
2011 - Talk to my smartphone rather than through it - Hello Siri<br />
2010 - Chat to the entire world 140 characters at a time - Hello Twitter<br />
2009 - Use my mobile phone as an airline boarding pass - Cheers, British Airways<br />
2008 - Read a book on a portable electronic device with eInk - Hello Amazon Kindle<br />
2007 - Watch TV that I missed by downloading it from the internet - Hello iPlayer<br />
2006 - Play games wirelessly, standing up using the whole body - Hello Nintendo Wii<br />
2005 - Have my car navigate for me - hello mainstream SatNav/GPS<br />
2004 - Use reliable two-way video calling over the internet with no charges - hello Skype<br />
2003 - Be unable to cross the atlantic on a commercial flight in less than 3 hours - goodbye Concorde.<br />
2002 - Keep most of my music on a small portable player - goodbye CDs, hello IPod<br />
2001- Look things up on a user-generated online encyclopaedia - hello Wikipedia!Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com0tag:blogger.com,1999:blog-3599749540293207351.post-50262246048533820342018-12-24T04:01:00.001-08:002018-12-24T04:01:18.743-08:00HA is NOT DR - no, really it isn't!"Let's sort out the NFRs of this system!"<br />
"OK, First we do HA/DR"<br />
"Errr . .which one do you actually want to do first - HA or DR?"<br />
<br />
Garratt's 1st Law of availability: HA is not DR<br />
(Garratt's 2nd Law of availability: DR is not HA)<br />
<br />
<h3>
HA=High Availability</h3>
'Availability' is a measure of when the system is available. If you try and use the system (by making a request to it) then it's available if it can take your request.<br />
<br />
'taking' the request can mean either processing the request, or accepting the request and processing it later. More on this below.<br />
<br />
Usually, HA means that if one (or more) components of the system stop working, or are lost/destroyed or are taken out of service for maintenance, the system carries on running and therefore the availability of the system (the proportion of time it is available vs the proportion of time when it isn't) is high.<br />
<br />
<h3>
DR=Disaster Recovery</h3>
This is how you recover from a disaster which affects your system. More details on what a 'disaster' might be is discussed below.<br />
<br />
A disaster may be the loss of many components or a large 'component' due to physical factors e.g. a flood or fire. (The usual example is 'what if a plane lands on a data center'? - this is not useful as it hardly ever happens. Floods, fires or power outages are much more likely).<br />
<br />
A disaster may also be data corruption (deliberate or accidental), someone deploying the wrong version of an update or other non-physical cause.<br />
<br />
<h3>
These are not the same thing - HA is not DR!</h3>
<div>
In one sentence "A disaster is something that happens to your system that HA cannot recover from".</div>
<div>
<br /></div>
<h3>
Assignment: Compare and Contrast HA and DR</h3>
<div>
To try and bring out some more examples, below are a number of differences between the two...</div>
<div>
<br /></div>
<h3>
HA is usually active/active. DR may need to be active/passive</h3>
<div>
Everyone wants active/active. Why would you not want instant recovery? Why wait to have the recovery site 'recover from cold'.</div>
<div>
<br /></div>
<div>
Let's consider the following active/active situations that HA cannot recover from autonomously.</div>
<h4>
<ul>
<li>Replicated corruption</li>
</ul>
<span style="font-weight: normal;">We have two copies of our data, one on each site. This protects us against loss of a site. If we make a change to data on site 1, the change is copied instantly to site 2.</span><br />
<span style="font-weight: normal;"><br /></span>
<span style="font-weight: normal;">If we corrupt the data on site 1, the corruption is copied instantly to site 2. Now both sites are corrupt - how do we recover?</span><br />
<span style="font-weight: normal;"><br /></span>
<span style="font-weight: normal;">Someone makes a bad software update on site 1. The change is copied to site 2. Now both sites won't start up. What now?</span><br />
<ul>
<li>Split-Brain (Dissociation)</li>
</ul>
<span style="font-weight: normal;">We have two copies of our data, one on each site. This protects us against loss of a site. If we make a change to data on site 1, the change is copied instantly to site 2. If we make a change on site 2, this is copied instantly to site 1.</span></h4>
<div>
Now let's say we lose the link between sites 1 and 2. We make a change to customer #123 on site 1. We now have two different copies of the data. Which is right? We then make another change to the same customer on site 2. Which is right now?</div>
<div>
<br /></div>
<div>
When we restore the link - which side is 'right'? We effectively have data corruption. How do we recover?</div>
<div>
<br /></div>
<div>
At this point, we have corrupted data or a corrupted configuration on both sites. We have nowhere to go.</div>
<div>
<br /></div>
<div>
If we had an offline copy or 'last known good' then we can shut down the 'live' system and move to the 'last known good' one. This may take some time to start up the 'passive' copy, but it's a lot easier than trying to fix corrupted data!</div>
<div>
<br /></div>
<h3>
HA is usually automatic/autonomous, DR should have human intervention</h3>
<div>
The usual way of implementing HA is to have some redundant duplicates of components, for example application servers. If you need 6, have 7 or 8. Balance the load across all of them. If you lose one (or two) then the rest pick up the load. The load balancer will detect that one is 'down' and will not send requests to it.</div>
<div>
<br /></div>
<div>
Monitoring software can detect if a component is 'down' (e.g. if it has crashed) and can attempt to restart it. In this case, the load balancer will detect that it is 'back up' and route requests to it again.</div>
<div>
<br /></div>
<div>
All of this happens automatically. Even at 3am. Most of the time, the users will not even be aware.</div>
<div>
<br /></div>
<div>
DR is a lot more 'visible'. For things to be bad enough that a DR situation occurs, people have usually been impacted (although not always).</div>
<div>
<br /></div>
<div>
Often the system as a whole has been 'down' for a period, or is operating in an impacted state e.g. running slowly, not offering all functions, 'Lose one more component and we're offline' etc.</div>
<div>
<br /></div>
<div>
At this point someone needs to say 'Invoke the DR plan'. This can be obvious 'The police just called - Data Center 1 is flooded' or a judgement call 'If we can't fix the database in the next 30 minutes, we will invoke DR'.</div>
<div>
<br /></div>
<div>
The decision to invoke the DR plan is usually taken by a human. Many of the actions needed to invoke the DR plan rely on human actions as well.</div>
<div>
<br /></div>
<h3>
HA usually has no user impact. DR may be visible to the users.</h3>
<div>
When a component fails in an HA system, requests are routed to other components and the system carries on. When components are maintained/patched/upgraded, they are done one-at-a-time so that the rest can carry on processing requests. Users are unaware of this.</div>
<div>
<br /></div>
<div>
In a disaster situation, it's usually visible. Requests cannot be processed (or not all requests can be processed). Responses may be incorrect. The system may be behaving unpredictably. One reason for invoking DR is that the system is not seen to be behaving correctly and needs to be 'shut down before it can cause any more damage'</div>
<div>
<br /></div>
<h3>
HA is normally near-instantaneous. DR takes time (RTO)</h3>
<div>
HA is achieved usually be re-routing requests away from failed components to active ones. These components are 'standby hot' or 'active/active redundant'. There is no delay.</div>
<div>
<br /></div>
<div>
In a DR situation, requests may not be processed for some time - usually a small number of hours.</div>
<div>
<br /></div>
<div>
DR usually has a 'Recovery Time Objective' or 'RTO' which is how long it takes from when the system is down to when it has recovered.</div>
<div>
<br /></div>
<h3>
HA does not usually result in data loss. DR might (RPO)</h3>
<div>
HA often switches requests between multiple redundant components. These components may have multiple copies of the application data. If one fails, others have copies. There is no data loss.</div>
<div>
<br /></div>
<div>
In a DR situation, there may be data loss. If data is copied asynchronously between sites, there may be a small amount of lost data (e.g. subsecond) if the primary site is lost. </div>
<div>
<br /></div>
<div>
Where DR is invoked due to data corruption, the system may be rolled back to a 'last known good' data point which may be minutes or even hours ago.</div>
<div>
<br /></div>
<div>
In either of these cases, the system has a 'Recovery Point Objective' or 'RPO' which is the state or point to which the system is recovered.</div>
<div>
<br /></div>
<div>
This might be a time (usually equivalent to the state in which the system was last backed up) - for example: "System will be restored to the last backup. Backups are taken on an hourly basis". </div>
<div>
<br /></div>
<div>
It might also be expressed in terms of data e.g. 'Last committed transaction' where transactions are synchronously replicated across sites.</div>
<div>
<br /></div>
<div>
Due to the seriousness of rolling back to the last backup and the resulting data loss, many organisations plan to fix corruption by using a 'fix forward' approach where the corrupted data is left in the system but is gradually fixed by correcting it. The corrections are kept in the system and are audited.</div>
<div>
<br /></div>
<h3>
HA situations can happen regularly - DR never should.</h3>
<div>
If systems are built at large scale, individual components will fail. There is a 'mean time between failures' for most hardware components which predicts the average time a component will last before failing. Things like disc drives just wear out. We plan for these with redundant copies of components and we replace them when we fail. HA approaches mean that our users don't see these failures.</div>
<div>
<br /></div>
<div>
DR is something we hope will never happen. It's like having insurance. No-one really plans for a data centre to burn down once every 10 years, or for their systems to be hacked or infected with a virus. Like insurance though, we have DR provisioning because we never know ...</div>
<div>
<br /></div>
<h3>
With HA, the system appears unaffected. In a DR situation, things might not be 100% 'Business as Usual'</h3>
<div>
HA usually recovers from a failure of a component. DR often recovers from the failure of a system.</div>
<div>
<br /></div>
<div>
If you have 10 components and you add 2 for HA, that doesn't cost so much. Building a whole other data center and a copy of all your components is expensive. So you may want to look at other approaches when in 'DR' mode.</div>
<div>
<br /></div>
<div>
Remember: DR should never happen. And if there is a good reason (fire/flood), it's perfectly acceptable to tell your customers 'Look, we've had a disaster, we are in recovery'.</div>
<div>
<br /></div>
<div>
If your house burnt down, you'd tell people you were living in a hotel and that you couldn't have them over for dinner, wouldn't you?</div>
<h4>
<ul>
<li>Reduced Availability</li>
</ul>
<span style="font-weight: normal;">Simply put, this means that your system in DR state cannot process requests as quickly, or cannot process as many requests. It may be that your live system has 10 servers but your DR system only has 5 (remember - you don't expect it to ever be invoked).</span><br />
<br />
<ul>
<li>Alternate Availability</li>
</ul>
<span style="font-weight: normal;">This is where not all services are available as usual and you have made alternative arrangements.</span></h4>
<h4>
<span style="font-weight: normal;">For example 'We can't offer account opening on-line at the moment. Please contact your local bank branch'.</span><br />
<span style="font-weight: normal;"><br /></span>
<span style="font-weight: normal;">From an IT point of view, changes can be made. Following 9/11, the BBC put out a 'reduced graphics' version of their site with the emphasis on text and information and not video and graphics. This was due to an overload of their servers due to the number of people wanting information.</span><br />
<ul>
<li>Deferred Availability</li>
</ul>
</h4>
<div>
The 'Thanks for your request - we'll process it in a while and come back to you' approach.</div>
<div>
<br /></div>
<div>
This is where queueing mechanisms or similar are used. The system cannot handle all requests in real-time, but may be able to process some overnight when demand is low. It may be that you can't print the event tickets out immediately but you can send copies by email then next day for example.</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com0tag:blogger.com,1999:blog-3599749540293207351.post-82133538248139432822018-10-26T04:40:00.001-07:002018-10-26T04:40:53.508-07:00Hot and Warm Desking: Why I have hot-desking problems and how to fix them"Where do I sit?"<br />
"Anywhere that's free - it's hot-desking here"<br />
Thinks: OMG - not again . .<br />
<br />
<div>
We're working to an agile world where people move teams and projects on a regular basis.</div>
<div>
<br /></div>
<div>
We have flexi-time and people work at home some of the time.</div>
<div>
<br /></div>
<div>
We have 'campuses' where there is no 'big office' and there may be multiple buildings in a 'metro-area' with shuttles moving between them.</div>
<div>
<br /></div>
<div>
We are living in the future!</div>
<div>
<br /></div>
<div>
<div>
1. Turn up at the office</div>
<div>
2. Find the first desk with no-one in it (or working at it that day)</div>
<div>
3. Sit down, unpack, plug in, start work!</div>
</div>
<div>
<br /></div>
<h4>
What's the problem?</h4>
<div>
There are a number of problems with this approach...</div>
<div>
<br /></div>
<h3>
Not all desks are created equal.</h3>
<div>
In an environment where hot-desking actually works, all the desks have identical facilities. If one desk has a monitor and a phone and 4 power sockets, they all do. This is key for things you need to actually do your work - if a desk is nearer to a window then that's nice but it doesn't, cosmically speaking, matter.</div>
<div>
<br /></div>
<div>
What does matter is if your desk doesn't have an external monitor but all the others do. Or if three of the power sockets have fused and don't work. Or if this is the desk where the chair leaks gas and you end up sitting on the floor after 30 minutes.</div>
<div>
<br /></div>
<div>
<b>Solution</b>: Make all hot-desks identical equipment-wise. Keep maintaining them so there isn't 'That desk with the dodgy monitor' or similar.</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<h3>
Not all desks are hot-desks - and you can't tell</h3>
</div>
<div>
Where it works, hot desks are marked as hot desks. Not by implication of 'hot desks are ones with no name tags on them' - this does not work!</div>
<div>
<br /></div>
<div>
What looks like a hot-desk turns out not to be: "10am: Excuse me, this is my desk." "Is it? How so?" "Well it is, it's assigned to me on the plan, which is in the filing cabinet in the basement next to the sign saying 'beware of the leopard'". Cue packing up, moving, finding no more desks . .</div>
<div>
<br /></div>
<div>
<b>Solution</b>: Label the hot desks explicitly. Ensure people don't take the labels off (it happens!)</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<h3>
"Warm Desks" and the culture of entitlement</h3>
</div>
<div>
"When everyone is special, no-one will be!" - Syndrome, The Incredibles.</div>
<div>
(see also "I think I deserve an office, so I've booked this meeting room all day. Every day.")</div>
<div>
<br /></div>
<div>
Some people don't like hot-desking. That's fine but they then start to subvert it. They start setting up 'their' desk with all their equipment and trinkets such as family photos, favourite coffee mug, pot plant etc on it. This becomes 'the desk they always sit at' and eventually 'Derek's desk'. </div>
<div>
<br /></div>
<div>
<b>Solution</b>: Heartlessly enforce the 'clean desk' policy overnight or first thing. ANYTHING that's not the 'standard hot desk equipment' gets removed and the 'offender' needs to go and get it back.</div>
<div>
<br /></div>
<div>
<br /></div>
<h3>
"Pre-Booking" or "German Towels" (see also "Warm Desks")</h3>
<div>
This is not as bad as 'Warm Desks' but this is the "OK, I'll be in tomorrow - I'll just leave my laptop here overnight to 'book' my desk for tomorrow. For extra security, I'll lock it to the desk.." approach.</div>
<div>
<br /></div>
<div>
<b>Solution:</b> Again, enforce the 'clean desk' policy. Also provide lockers so that if people want to leave equipment without taking it home, they can.</div>
<div>
<br /></div>
<div>
<br /></div>
<h3>
The 80-20 rule: We only provide desks for 80% of our people</h3>
<div>
This is the main drive for hot-desking: reduction of costs. Why have 'Andy's desk' if he's off at customer sites 4 days per week? He can hot desk when he comes in on a Friday.</div>
<div>
<br /></div>
<div>
No he can't - not if there isn't a desk available. Or he keeps getting shunted from desk to desk as the 'That's my (warm) desk!' people roll in.</div>
<div>
<br /></div>
<div>
There may be free desks that day, but they have names on them. They're not 'hot desks'. It might be possible to sit there, but how do you tell? Also, they're full of people's trinkets and there is the 'You sat at my desk and moved my monitor! How <i>dare</i> you???' culture - more common than you might think!</div>
<div>
<br /></div>
<div>
<b>Solution:</b> If people with assigned desks are not going to be in, ensure people can find that out. Make sure 'assigned' desks are actually usable by people 'borrowing' them</div>
<div>
<br /></div>
<div>
<b>Solution:</b> Have a 'If there's no desk, you can go home!' rule. It's not your fault that you don't have the equipment to do your job.</div>
<div>
<br /></div>
<div>
<br /></div>
<h3>
"This desk assigned to project Caribou"</h3>
<div>
This is a combination of wanting team members to sit together (good) and micro-cost centering where every desk needs to be billed to a project or team (bad).</div>
<div>
<br /></div>
<div>
If you're going to do this, why not do it for toilet stalls as well? Or seats in the cafeteria?</div>
<div>
<br /></div>
<div>
<b>Solution:</b> Have team 'areas' not desks. If project 'moose' has lots of people in that day and fills their spaces, then they overflow into project 'warthog' desks. Good grief, it's only a desk!</div>
<div>
<br /></div>
<div>
<br /></div>
<h3>
"Hotelling" or "Pre-booking properly"</h3>
<div>
In theory, this is a great idea and it can work. Before you come to the office, you go online and see if there are any free desks. If there are, you book one for the day - kind of like booking meeting room - or a hotel room, hence the name!</div>
<div>
<br /></div>
<div>
The problem is, just like booking meeting rooms, this has issues</div>
<div>
<br /></div>
<div>
"I'll book my desk for the week" - great! Except you go to visit another site on Wednesday and you decide to work from home on Friday. You don't cancel your reservation - why would you?</div>
<div>
<br /></div>
<div>
And why not just book your preferred desk for a month? That then becomes 'Derek's Desk'. You could even do it to a meeting room and then you have your own office!</div>
<div>
<br /></div>
<div>
<b>Solution:</b> Treat hotelling like a real hotel. If you don't turn up and you don't cancel before 6pm, you get 'charged' for your desk.</div>
<div>
<br /></div>
<div>
Also, you just book a room in a real hotel. The hotel decides which actual room you get. Allocate desks randomly and move people around. This avoids 'warm' desks.</div>
<div>
<br /></div>
<div>
OK, you don't get charged real money when you book desks at work, but you can use 'booking tokens'. Make people book their desk every day, the day before. They need to electronically 'spend' their booking 'token' to book a desk.</div>
<div>
<br /></div>
<div>
To get the 'token' back, they have to actually turn up and use their desk. Or cancel the reservation. If they don't, they can't get the 'token' back for the next day and they need to take their chances with what's left.</div>
<div>
<br /></div>
<div>
e.g. On Monday they book Tuesday. They decide to work from home Tuesday but don't cancel. They then try to book Wednesday but they don't have a 'token' to do it and they need to run the hot-desk gauntlet on Wednesday... at which point they get their 'token' back.</div>
<div>
<br /></div>
<div>
If you turn up without a reservation, you can look at the system and see what's free. If there is nothing free (see 80-20 rule) you can make other arrangements. With on-line hotelling, you can check before you leave home!</div>
<div>
<br /></div>
Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com0tag:blogger.com,1999:blog-3599749540293207351.post-2822179139379120142018-10-06T01:37:00.000-07:002018-10-07T06:10:16.246-07:00Driving in America - my personal guide for Brits driving in the USA<h3>
Drive on the right!</h3>
<div>
That seems to be the standard advice when you look up 'What do I need to know when I drive in the USA?'. After all, everything else is in English, right? How hard can it be?<br />
<br />
This is a guide for Brits/UK people who are travelling to America and are going to be driving. If you are an American, all of this should be obvious to you. It wasn't to me! Also, if you are coming from another country e.g. Australia or RSA, things like 'Americans call it x, we call it y' etc might not apply to you.<br />
<br />
<h4>
Note: This is MY INTERPRETATION AND EXPERIENCE. This may be wrong. This is not legal advice! States have 'driver's handbooks' on the internet - you can look them up to find out what the actual rules and regulations are - not just what some guy told you on the internet!</h4>
</div>
<h4>
Also Note - traffic laws are defined at the STATE level. Laws can be different from Florida to California to Texas - check first!</h4>
<div>
<br /></div>
<h3>
My Top 10 "You need to know these - it may save you trouble" hints</h3>
<div>
(These are the 'Wow - what do I do here?' or 'Avoid getting a ticket/fine' ones)<br />
<br /></div>
<h3>
1. The 4-Way / All-Way / Stop-sign intersection</h3>
<div>
At a 3 or 4 way crossing/crossroads, you may see a sign 'STOP' sign with 'All-Way' or '3-way' on it. For this, you stop, then you go in the order you arrived at the junction. If there were people stopped at the line before you, let them go then it's your turn. After that, everyone goes in order of arrival.</div>
<div>
For some reason, most driving guides don't tell you about this one.<br />
<br /></div>
<h3>
2. The 4-way with no stop signs and the parallel white lines 1 meter apart.</h3>
<div>
You may come to a cross junction with parallel white lines about a meter (3 feet) apart on all the roads. This means you don't need to come to a stop, but if you need to know who goes first, the 'go in order of arrival' often applies.<br />
<br /></div>
<h3>
3. You can turn right at a red light - but there are rules!</h3>
<div>
In most places, if you come to a complete stop first, you can turn right at a red light - as long as you are 100% sure there is nothing coming. If in doubt, just wait. In my experience, if you want to wait for the light to turn green, then people don't honk their horns at you and just wait.</div>
<div>
From what I understand, if you turn right on a red light, if there is an accident, it's pretty much your fault.</div>
<div>
You can turn left on red but only into a one-way street. I've never tried this.</div>
<div>
Look out for 'no turn on red' signs - this means what it says.<br />
<br /></div>
<h3>
4. Move over when passing a stopped emergency vehicle on the hard shoulder</h3>
<div>
If you see a police, fire or other emergency vehicle stopped on the hard shoulder, then move over one lane to the left so you have at least one clear lane with no traffic between you and them. This is a good safety thing, but it's a legal requirement in many states.<br />
<br /></div>
<h3>
5. Don't pass a school bus IN ANY WAY if its red lights are flashing</h3>
<div>
If you see one of those yellow school buses stopped, with its red lights flashing, you must NOT pass it. This doesn't just mean no overtaking it, it means you can't drive past it even if you are both facing opposite directions. The bus flashes its red lights (and often puts out a red STOP sign) when unloading children. This is a safety thing. They are really hot on this. Don't even think it. Not even at 1mph.<br />
<br /></div>
<h3>
6. Indicate all lane changes on highways and freeways.</h3>
<div>
I indicate to pull out in the UK, but I don't always indicate to 'pull back in' when I've overtaken something on a motorway and I'm away down the road. You need to indicate any lane change in the US as it's classed as changing lanes, not 'pulling back in'. I've actually been ticketed for this - it was a genuine 'What did I do wrong, officer?' moment.<br />
<br /></div>
<h3>
7. Don't park next to a fire hydrant - or red lines on the kerb</h3>
<div>
Pretty much what it says - fire hydrants may not have kerb markings next to them, but you still can't park next to one.<br />
<br /></div>
<h3>
8. Put your lights on when it's raining</h3>
<div>
How heavy does the rain need to be? The usual advice here is, if you have your wipers on, put your lights on.<br />
<br /></div>
<h3>
9. HOV or diamonds painted in a lane means car-shares only</h3>
<div>
If you have more than one person in the car (sometimes you need 3 people but this is shown) then you can drive in these lanes. HOV means 'High Occupancy Vehicle'. This is why these lanes are often empty when the other 5 (or more - US freeways can have LOTS of lanes) are jammed with traffic moving at 2mph. If you're on your own (and 99.9999999% of Americans are driving alone, then you can't use them)<br />
<br /></div>
<h3>
10. US Police pull up BEHIND you - and want to see your hands and your documents!</h3>
<div>
If you get pulled over, US police will do it by coming up behind you and switching lights (and sometimes a quick blast of the siren). Keep an eye on your mirror - it's not clever to be driving along ignoring them. If they're behind you, it's you they want to pull over.</div>
<div>
When you stop, they'll pull up behind you. Keep your hands on the wheel. Although you MUST carry your documents (License, rental details, insurance etc) in the car with you, don't duck down and try and get them. The police might think you're going for a gun! Wind down the front window then keep your hands on the wheel. One tip, Americans do not understand sarcasm. Policemen especially don't...<br />
<br /></div>
<h3>
Useful Terms and definitions:</h3>
<ul>
<li><b>Pavement</b>: This is what Americans drive on! Pedestrians walk on the sidewalk. You may see signs saying 'drive on the pavement'. This does not mean what you first think it does!</li>
<li><b>Sidewalk</b>: This is what Americans walk on - what Brits call the pavement.</li>
<li><b>Median</b>: The part between the two directions on a freeway. They tend not to have barriers/armco - just big bits of grass. Even though it looks possible, don't be tempted to U-turn over it - not allowed!</li>
<li><b>Semi</b>: This is a large articulated truck. You might know it as an artic. Note that Americans don't know what a 'lorry' is - they call them trucks - both the small pick-ups and the huge 50ft trailers.</li>
<li><b>Trunk</b> (of a car): Brits call it the boot</li>
<li><b>Hood</b> (of a car): Brits call it the bonnet</li>
<li><b>Auto</b>: A car. Americans tend not to call cars cars: They tend to use 'car' for a tram or railway carriage.</li>
<li><b>Shifter</b>: Gearstick for an automatic car. 'Driving Stick' means to drive a manual car - they don't have many of those. 99.999% of cars are automatics.</li>
<li>Parking meters: "<b>quarter</b>"=25c, "<b>nickel</b>"=5c, "<b>dime</b>"=10c. confusingly, dimes are smaller than nickels.</li>
<li><b>"Misdemeanour" and "Felony"</b> - one is more serious than the other. Don't try and get either.</li>
<li><b>License Plate</b>: Brits call it a number plate.</li>
<li><b>"Fender Bender"</b> - a Fender is what Brits call a Bumper. A Fender Bender is a low speed collision. Some states have signs saying 'Fender Bender? Move vehicles from travel lanes'</li>
<li><b>"Travel Lane"</b> - a lane on a freeway that isn't the hard shoulder</li>
<li><b>Freeway</b>: What Brits call a Motorway.</li>
<li><b>Interstate</b>: A type of long distance freeway that often goes across multiple states hence the name.</li>
<li><b>Highway</b>: Typically just a road, although it can mean effectively a dual carriageway.</li>
<li><b>Gas</b>: Short for 'Gasoline': Brits call it Petrol. Diesel is still diesel although you don't see it very much.</li>
<li><b>AC or A/C</b>: Air-Conditioning, not Alternating Current. You might be advised to 'turn off AC' on steep hills.</li>
<li><b>Gas Station</b>: Petrol Station or Garage. Americans keep their cars in the garage, they don't put petrol in at a garage. They don't mend their cars in garages either. If an American needs their car fixing, then it's 'In the shop'.</li>
<li><b>Shops and Stores</b>: To an American, a shop is a workshop. What Brits call a shop, Americans call a store.</li>
<li><b>ZIP code</b>: What Brits call a Postcode. US petrol pumps will ask for your ZIP code. You don't have one. Therefore you can't pay at the pump.</li>
<li><b>Stop light</b>: What Brits call a brake light (on the back of the car). This can also be confusing as some call a red traffic light a 'Stop light' as well. . .</li>
<li><b>Limey</b>: Brit, English or UK person - from when the British navy gave limes to sailors in an attempt to prevent scurvy. I've never been sure if this is an insult or not - kind of like calling an American a 'Yank'. Why do you need to know this? A policeman may call you one . .</li>
</ul>
<h3>
Driving an Automatic</h3>
<div>
If you're driven a European automatic, it's pretty much the same - although bear in mind that the gearstick ('Shifter') may be on the steering column. For the rest of you:<br />
<br />
There is no clutch. The car changes gear for you. When you slow down and stop, it engages an 'automatic clutch' (simplified explanation) - don't worry, it won't stall. You can stop with your foot on the brake and the engine will keep running fine.<br />
<br />
<h4>
IMPORTANT</h4>
<div>
Automatics have a thing called 'surge' or 'roll'. If you are in 'D'rive and you take your foot off the brake, it will likely roll *forward*. Don't forget this, park in a car park, take your foot of the brake and curse as you roll forward into another car!</div>
<div>
<br /></div>
<h4>
Quick 'I've just got off the plane and need to drive to the hotel' guide</h4>
Get in. There is no clutch. You don't need it. Foot on brake. Make sure shifter is in 'P'. Start engine. Keep foot on brake. Press lever/button on shifter and put into 'R' to go backwards or 'D' to go forwards. Foot off brake (car will start rolling in the direction you want - beware) and onto accelerator.<br />
<br />
Accelerator to go faster. Brake to slow down and stop. When you stop at lights, in traffic etc, just keep your foot on the brake. Don't bother about 'Neutral' - no-one ever does.<br />
<br />
To change from 'R' to 'D', foot on the brake, press lever/button and move the shifter.<br />
<br />
When you get to where you're going, stop, keep foot on brake, put shifter in 'P', turn off engine.<br />
<br />
<h4>
More detailed guide and explanation:</h4>
</div>
<div>
To move the shifter, you usually need to press/pull the lever or button on the shifter. Some combinations (often R to D) don't need you to, but doing it every time isn't a problem.</div>
<div>
<br /></div>
<div>
To get in and out of 'P' (Park) you need to have your foot on the brake. You may need your foot on the brake to start thee engine</div>
<div>
<br /></div>
<div>
<b>P=Park</b>. Shift to this to start the engine and when you park the car and stop the engine. Leave the car in 'Park' not 'Neutral'. Often you can't get the key out without the transmission being in Park. If you stop the engine and can't get the key out, one reason is you might still be in 'D'<br />
<br />
(Note: On some cars, 'P'=Park is a separate button off the shifter. On others if you stop at a low speed from reverse, the car will be 'helpful' and put itself in "P" when you stop)</div>
<div>
<br /></div>
<div>
<b>D=Drive / Forwards</b>. Use this to go forward. Just press the accelerator as usual. The car will change gear for you. Just pretend you have one huge gear if you like and ignore the rev-counter.</div>
<div>
<br /></div>
<div>
<b>R=Reverse</b>. Just what you think it is - like drive in the other direction. Be wary - reverse in an automatic can be faster than in a manual.</div>
<div>
<br /></div>
<div>
<b>N=Neutral</b>. I don't think I've ever used this! Unlike a manual (or 'stick shift') you don't start the car in N=Neutral, you use P=Park. Don't bother putting the car in neutral at traffic lights etc - just keep your foot on the brake. Neutral is really used for towing/pushing the car.</div>
<div>
<br /></div>
<div>
<b>L and/or 4, 3, 2</b>: These are your Low gears - used so the car can't change up further than the gear you've set it in. Used to 'engine brake' going down steep/long hills- you may see signs saying 'engage low gear'. Don't bother using these in normal driving - leave it in Drive.</div>
<div>
(You may have 'flappy paddles' to move into 4,3,2 etc in some cars. In others you push the shifter left and right).<br />
<br /></div>
<h3>
Freeways/Interstates and multi-lane highways</h3>
<div>
<br /></div>
<h4>
Lane Discipline - or lack of it</h4>
<div>
You can usually pass on both sides i.e. in any lane. Don't do it, but watch out for people weaving through traffic at speed - keep an eye on your mirrors.</div>
<div>
Some states try and have a 'keep right unless overtaking' policy i.e. trying to drive on motorways a bit more like Europeans. This doesn't seem to have caught on with the US driving population.<br />
<br /></div>
<h4>
Speed, Speeding and '5 over'</h4>
<div>
Helpful car rental staff sometimes say 'you're good for 5 over on the freeway' - which means if the limit is (say) 55 then you're unlikely to be stopped for doing 60 or less. This is not formal legal advice!</div>
<div>
<br /></div>
<div>
In some states, you must keep up with the traffic flow. This can be scary if all of the traffic is going 10mph over the speed limit!</div>
<div>
<br /></div>
<div>
In general, follow what everyone else does - which is a good guide to most situations!</div>
<div>
<br /></div>
<div>
In some states going slightly over the limit is a misdemeanour and a lot over is a felony. You don't want to be stopped for either.<br />
<br /></div>
<h4>
HOV lanes / "Diamonds" painted on the road</h4>
<div>
See above<br />
<br /></div>
<h4>
Tolls</h4>
<div>
Some roads are toll roads - but you can't pay cash at all of them e.g. the Golden Gate Bridge in San Francisco. You'll need to go online and pay the toll within a certain period of time. Don't think just because you're in a rental car you can ignore tolls - Avis, Hertz etc will chase you for them.</div>
<div>
<br /></div>
<div>
Speaking of rental cars, some have a thing called Plate Pass or similar. This means that you can just drive through toll gates (especially in the 'Tag' or 'Express' lanes) without stopping and your car license plate is read and recorded. This is sent, along with the bill, to the car rental company who will charge your credit card, together with a convenience fee of around $3 to $4 per day. Be aware that once you've gone through one toll, they will charge you the convenience fee for every following day until you give the car back - whether you've used toll roads or not.</div>
<div>
<br /></div>
<div>
Be aware, if you use plate pass for one $0.50 toll on day one of your 14 day holiday and never again, you could get a bill for nearly $50!</div>
<div>
<br /></div>
<div>
If you want to pay cash, keep a supply of quarters and $1 bills ("Singles") handy.<br />
<br /></div>
<h4>
Tailgating and undertaking</h4>
<div>
Americans seem to drive a lot closer behind you on freeways than Brits do - it doesn't necessarily mean they are trying to 'push past'. A lot of the time, they are very patient and will either wait for you to pull over or just undertake you. Don't panic when someone undertakes you - it's normal.<br />
<br /></div>
<h4>
Disappearing lanes and 'Right Lane MUST exit'</h4>
<div>
You might think that freeway driving would be relaxing but if you're in the right hand lane, watch out for the 'Right Lane MUST exit' (usually in yellow background) signs. The lane that you are in can suddenly be the 'you MUST turn off at the next junction' lane. You might have been in this lane for 100 miles - but nope, now it's going!<br />
<br />
Keep alert. You can end up leaving freeways without intending to - and it can be hard to get back on.<br />
<br />
Canadian comedian Kelly Monteith has a line "Hey, let's get 'em going 80 in the fast lane and then put up a sign saying 'lane ends in 10 feet'" - sometimes this seems like it's not far from the truth!<br />
<br /></div>
<h3>
Fuelling up / Putting Petrol in</h3>
<div>
How hard can this be? Very!</div>
<div>
<br /></div>
<h4>
Diesel is Green, Petrol/Gas is black on the pump nozzles/hoses!</h4>
<div>
This is the opposite way around from Britain! Don't get them mixed up. Most of the time you won't even see diesel and all pump hoses/nozzles will be black.<br />
<br /></div>
<h4>
Fuel grades 87/89/92 etc</h4>
<div>
There is a LOT of info about this, but in general, just choose the cheapest one/lowest number, especially if you have a rental car. For those who remember 2, 3 and 4 stars, it's not like that. Nearly all cars run on 'regular' or the cheap one.<br />
<br /></div>
<h4>
Lift up the leaver on the pump / pushing the fuel grade button.</h4>
<div>
If you're pulling the trigger but no gas/petrol is coming out, you often need to pull up a metal lever on the pump that is under where the nozzle goes when it's hanging on the pump. Push the lever back down again when you've finished. Note that when being helpful (and they nearly always are), Americans pronounce 'Lever' as 'Leh-Ver' not 'Lee-Ver' when they're telling you want to do.</div>
<div>
<br /></div>
<div>
Newer pumps have only one nozzle and you press a button with the number of the grade of fuel you want before you can fill up. Pick the lowest/cheapest one!<br />
<br /></div>
<h4>
Paying with a credit card at the pump/pre-paying for fuel.</h4>
<div>
Most American petrol pumps won't let you pump fuel unless you've paid first or authorised a credit card.<br />
<br /></div>
<div>
If you try and pay at the pump with a UK credit card, chances are it won't work as it will most likely ask you for a 5-digit Zip code (What we call a post code). You won't have one of those as you don't live in the states.<br />
<br /></div>
<div>
Not all pumps ask for a Zip code but most do. The internet will tell you to enter 00000 or just the numeric bits of your UK code with zeroes on the end e.g. 12700 for W12 7RJ. They are usually wrong. It doesn't work.<br />
<br /></div>
<div>
Go inside and pay the cashier in advance (note the pump number). Come out and fill up.</div>
<div>
<br /></div>
<div>
Some US chains (ArCo am/pm for example) don't take credit cards - check first.<br />
<br /></div>
<h4>
Gallons and US gallons.</h4>
<div>
Americans price and dispense fuel in gallons, not litres. A US gallon is not the same as a UK/ Imperial gallon! 1 US gallon is .82 UK gallons or 3.78 litres, not 4.55 litres like a UK gallon. Give them *some* slack when your car computer says you're only doing 20mpg.<br />
<br /></div>
<h4>
Prices/Discount for cash/Sales Tax</h4>
<div>
Most gas stations seem to have a different price for gas, usually a few cents per gallon. The price you see on the sign might not match what you pay - they don't always put both prices on the big sign either.</div>
<div>
<br /></div>
<div>
You don't need to add sales tax to fuel, it's already priced in. Unlike shopping in a US store where you find what you pay is 7 to 8% more than the price on the shelf - unless you're in Oregon or a similar no-sales-tax state.<br />
<br /></div>
<h4>
Fuel Economy</h4>
<div>
Even though US gallons are smaller, US cars can be really uneconomical compared to what you're used to, especially if you drive a small car, a diesel or both! Coming from a car that easily does 55 to 60mpg, seeing '22mpg' on the fuel computer was alarming.</div>
<div>
<br /></div>
<div>
Don't worry - they really are this inefficient - it's why fuel is so cheap!<br />
<br /></div>
<h4>
Attendant service in Oregon and New Jersey** (check these states)</h4>
<div>
If you're on Oregon or New Jersey then you don't pump your own fuel. In fact you're legally not allowed to - an attendant must do it for you. Unlike every other person who does anything for you in<br />
the US, people don't usually tip them although you can if you want.<br />
<br /></div>
<h3>
Traffic Lights & Pedestrian Crossings</h3>
<div>
<br /></div>
<h4>
Don't run over pedestrians when the light goes green</h4>
<div>
This is not just general advice (See "Drive on the pavement") - there is one trick that the US shares with continental Europe and can really freak out Brits.</div>
<div>
<br /></div>
<div>
You wait at a red light to turn right (for whatever reason). The light goes green. As a Brit, you gun the engine and take off. WTF? There's a pedestrian in the middle of your road!</div>
<div>
<br /></div>
<div>
Yes, this is somehow by design: When your light goes green, so does their pedestrian crossing light for the road across yours. So you get a green to go right and they get a green to cross the road that you're turning into - at the same time. This is by design. I've no idea why but watch out for pedestrians when your light goes green.<br />
<br /></div>
<h4>
Yellow/Amber</h4>
Americans call the orange light 'Yellow' or 'Orange' - they use 'Amber' to refer to the jewellery/resin.<br />
<div>
<br /></div>
<div>
There is no Yellow/Amber light between Red for stop and green for 'Go' - it goes straight to green! The first time you'll think 'Did I miss Amber? Was I not concentrating?' nope, it doesn't happen.</div>
<div>
<br /></div>
<div>
Amber does come between green and red when it changes and you have to stop.<br />
<br />
<h3>
Parking</h3>
<div>
America is great for parking - it's not like Britain where using your car is a crime...</div>
<div>
<br /></div>
<h4>
Parking Meters</h4>
<div>
This used to be a 'keep your car full of quarters and dimes' but many parking meters now take credit cards - and they don't need a ZIP code either. Just find a free one, put money in / use your card and park up</div>
<div>
<br /></div>
<h4>
Reversing in</h4>
<div>
In general, Americans don't - and they have really useful herringbone/slanted spaces to help you out. Some car parks actually have 'don't reverse park' - this is because people aren't very good at it and it's to stop bumps and scratches.</div>
<div>
<br /></div>
<h4>
Fire hydrants / Red paint on Kerbs</h4>
<div>
Don't park next to one, even if there is no sign - you might get towed away. Don't park next to a red painted Kerb either.</div>
<div>
<br /></div>
<h4>
'Validated' Parking</h4>
<div>
Although most American shopping parking is free (as in no cost) some shopping malls (shopping centers) do charge you - and it can be expensive, especially in cities.<br />
<br /></div>
<div>
<br /></div>
<div>
Validation means that when you buy something or use a restaurant, you can ask them to 'validate' your parking - they will process the ticket so that you don't have to pay (as a 'Thank you' for using their establishment). There is often a time limit on this (e.g. max 3 hours) so check the notices</div>
<br /></div>
<h3>
Miscellaneous</h3>
<div>
(or "I couldn't find anywhere else for it to go")<br />
<br /></div>
<h4>
Red Indicators</h4>
<div>
American cars often have red indicators where we would have orange. Some cars have one light for the night lights, the indicator and the brake light (Americans call it a 'stop light'). It just gets brighter or flashes. Sometimes I fail to notice a red flashing light as an indicator - make sure you don't. Some cars (especially foreign makes) have orange indicators.<br />
<br /></div>
<h4>
Racing off at the front</h4>
<div>
Contrary to movies and big 'muscle cars', Americans don't seem to do this. In the UK quite often two cars next to each other on the front row of traffic lights will see who can drive off first and fastest - especially for men.</div>
<div>
Americans just don't seem to do this - if you rev up and take off, you'll be on your own - or maybe with a policeman. This can be useful if you find yourself in the wrong lane and at the front - it's often possible to out-accelerate everyone even in a piece-of-junk rental car if you need to move over lanes.<br />
<br /></div>
<h4>
Drinking and driving - and beware of alcohol cans and bottles in the car</h4>
<div>
You wouldn't be so stupid as to drink and drive - but your passengers might. Don't! or at least check the state rules. Often, you can't have opened containers/bottles/cans of alcohol in the car - even if no-one is drinking them. In some states, you can't even have closed containers - any alcohol must be locked in the boot/trunk. Really! Check the state law.</div>
<div>
<br /></div>
Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com1tag:blogger.com,1999:blog-3599749540293207351.post-5230509702810497132018-08-30T10:15:00.000-07:002018-08-30T10:16:54.546-07:00Writing Technical Documentation like Van Halen!I write a lot of technical documentation - I've actually written three IBM Redbooks (not all on my own I must add).<br />
<br />
Most of my documentation is for customers. Sometimes they ask for it. Sometimes it's 'Just what we do' and I can feel the agile manifesto running away in disgust. Sometimes it's so that I've got a record for future reference.<br />
<br />
Most importantly is when it sets out what we are going to do and how we are going to do it. So we can all agree and challenge any approaches etc we don't like.<br />
<br />
Question is - does anyone read it? If so, to what level of detail?<br />
<br />
Some of the documentation is quite 'powerful' with big implications on some words. Architectural decisions are a great example of this.<br />
<br />
"We will <i>(not)</i> encrypt the data in the database as the risk of it leaking is <i>(not)</i> significant" - adding the words in italics is the difference between 'Your data was secure when we got hacked' and 'We're on the front page of the news!'.<br />
<br />
You can run page-turner sessions where you walk through the decisions. You can ask people to read and approve (say) 5 per week. But how do you prove they've actually read it?<br />
<br />
(And I care that they did read it - I'm not trying to pull the wool over anyone's eyes here and hope they don't notice something I've just 'slipped in')<br />
<br />
Enter the 'Brown M&M clause' approach.<br />
<br />
Van Halen are a rock band who used to have a rider of 'M&Ms - WARNING: NO BROWN ONES!' in their contract for performing a concert at a venue.<br />
<br />
The rumour was that if they turned up and there were no M&Ms - or there were brown ones present, they could just cancel the concert for contract violation.<br />
<br />
The truth was that if there were brown M&Ms - what else had the venue not read? Was the voltage and ampage correct? Could the stage bear the weight? Could they even get their trucks of equipment into the venue? Some of this stuff is important.<br />
<br />
So if there were brown M&Ms, they assumed the contract wasn't read - and then went through and checked everything themselves as it's the only way to know. It's true - see here: <a href="https://www.snopes.com/fact-check/brown-out/">https://www.snopes.com/fact-check/brown-out/</a><br />
<br />
So I use the same technique. Examples are:<br />
<br />
Data retention: In the event of the disk becoming over 90% full, data pruning will be performed of the historical order records. <b><Brown M&M></b>Customer historical records will be deleted based on reverse alphabetical order of their first names, ignoring order dates. In the event a customer has no first name, it will be assumed to be 'Simon'<b></Brown M&M></b><br />
<br />
Due Diligence: For every new account to be opened the following due diligence checks will be performed in the folllwing sequence by the BPMN process flow: (1). KYC, (2) KYB, <b><Brown M&M> </b>(3) KFC<b></Brown M&M> </b><br />
<br />
(For those without a banking background, these are anti-fraud legal checks: KYC=Know Your Customer, KYB=Know Your Business. KFC is, of course, Kentucky Fried Chicken)<br />
<br />
Both of these have passed at least one review, sometimes more!<br />
<br />
OK, it's slightly silly and it brightens up a dull day, but does it matter? Yes it does. We all laugh at warnings that say 'Coffee may be hot' or 'Peanut butter may contain nuts**' but most people don't read most documentation.<br />
<br />
Who reads the service agreement on public WiFi for example? There is the case of the agreement whose brown M&M is that you sign over your eldest child! Really! <a href="https://www.theguardian.com/technology/2014/sep/29/londoners-wi-fi-security-herod-clause">https://www.theguardian.com/technology/2014/sep/29/londoners-wi-fi-security-herod-clause</a><br />
<br />
If it's important, keep it short. Keep it clear. Explain it. Check people have understood it - maybe by asking them what their favourite M&M colour is!<br />
<br />
**Peanuts aren't nuts - they are legumes...this is a subject for another day...<br />
<br />Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com1tag:blogger.com,1999:blog-3599749540293207351.post-80085774124532265362018-08-30T01:47:00.001-07:002018-08-30T01:48:26.228-07:00Why I want someone else to own my career"You own your own career"<br />
"You <b>should</b> own your own career"<br />
"You <b>can</b> own your own career"<br />
<br />
These three sentences are subtly different in words but hugely in the impact for you as an employee of a company.<br />
<br />
Every noticed how successful sports people have two managers? (e.g. footballers).<br />
<br />
Their first manager is the one they work for. They do what they are told by this manager. This manager hires, fires decides pay rises etc. You probably have one of these if you are a company employee. This manager works for the football club, cricket team, formula one team or whatever.<br />
<br />
Think Jose Mourinho (Man Utd), Toto Wolff (Mercedes F1) or Christian Horner (Red Bull F1) if you like.<br />
<br />
The second one is their manager that works for the sports person. This person finds them work, negotiates their contracts and pay rises, manages their image rights, gets them product endorsements e.g. shoes, clothes etc. Sometimes this person is referred to as their agent - for example in acting. They may have more than one of these.<br />
<br />
The key thing here is that the sports person concentrates on the sport. They score goals. They win races. They train to score more goals or to drive faster. They concentrate on what their company is paying them for. They work on delivering business value.<br />
<br />
They might be the best in the world at what they do - or are trying to be. Conversely, they might be terrible at managing their career. This doesn't matter - they have someone else who is very, very good at it to do it for them.<br />
<br />
"Ah" I hear you cry: "You should have a career mentor!".<br />
<br />
Nope - that's not the same thing at all. Does my career mentor apply for jobs for me? Do they write my CV? Do the join me in performance appraisals? Do they negotiate salary rises and promotions? No - they give advice as to how I can do that myself.<br />
<br />
I admit I'm terrible at that sort of thing - and although I'd like to be better at it (because being better at it might mean I'd be further up the career ladder), I have absolutely no interest in becoming the kind of person who is better at it.<br />
<br />
I want to be better at architecting, designing and implementing solutions for my customers. Faster at delivery with higher quality and better responsiveness. Better at mentoring and coaching my team. Better at driving business value. Better at making my customers happier.<br />
<br />
So, I'm going to concentrate on that - and I'm also going to go and find someone to manage my career for me. If it's good enough for Lewis Hamilton . . .Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com0tag:blogger.com,1999:blog-3599749540293207351.post-55845617914292165172018-08-23T01:10:00.004-07:002018-08-23T01:10:54.110-07:00Garratt's first law of . . .Garratt's 1st law of Agile states:<br />
<br />
"Agile is a good thing. It's endorsed by major companies and analyst firms. Lots of people are using it."<br />
"Agile projects get funding - usually for the above reasons"<br />
"My project needs funding"<br />
"Therefore my project is Agile"<br />
<br />
See also Blockchain, Containers, Cloud, SOA, BPM, Cognitive...<br />
<br />
Is your project using the right technologies and methods for the right reasons?<br />
<br />
See also Garatt's 1st corollary of Agile:<br />
<br />
"Having agile skills is good for my career and pays well"<br />
"I need Agile on my CV (resumé)"<br />
"Therefore we will use Agile on this project"<br />
<br />
See also Blockchain, Containers, Cloud, SOA, BPM, Cognitive...<br />
<br />
From an alternate perspective, Garratt's 2nd corollary of Agile:<br />
<br />
"Many people and companies want to use Agile and therefore have budget for it."<br />
"I need to sell my products and services"<br />
"Therefore my products and services are Agile!"<br />
<br />
See also Blockchain, Containers, Cloud, SOA, BPM, Cognitive...<br />
<br />Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com0tag:blogger.com,1999:blog-3599749540293207351.post-29137846335881297812017-11-27T23:23:00.002-08:002018-08-30T10:19:25.617-07:00The Monica Geller excuse – ‘It’s hard for some people!’<div class="MsoNormal">
(or “The one with Monica from Friends”)</div>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 1.2pt; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm;">
<b><span style="color: #222222; font-family: "helvetica" , sans-serif; font-size: 10.5pt;">Ross</span></b><span style="color: #222222; font-family: "helvetica" , sans-serif; font-size: 10.5pt;">: Monica couldn't tell time till she was 13!<o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 1.2pt; margin-left: 36.0pt; margin-right: 0cm; margin-top: 0cm;">
<b><span style="color: #222222; font-family: "helvetica" , sans-serif; font-size: 10.5pt;">Monica</span></b><span style="color: #222222; font-family: "helvetica" , sans-serif; font-size: 10.5pt;">: It's hard for some people!<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
(Friends, Season 7, “The One with Rachel’s assistant”)<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
I was having a conversation with a colleague about transport
level security (TLS)<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
“Should we use Server-only TLS or Mutual (Client and Server)
TLS?”<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
“Mutual’s really hard – let’s do Server-only for now”<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
“Or we could work out how to do it the right way . .”<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
“Yep, right: We need to do it properly – especially with
security!”<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
How many sub-optimal architectures, designs and implementations
do we have because ‘Something was hard to do’?<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
This is the “Monical Geller Excuse” – not doing something because
‘It’s hard for some people”.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Don’t confuse being easy to use for the end user, which is a
laudable aim, with easy-to-architect/implement/design/develop.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
“Who is going to know?” isn’t a reason (See front page of
the news web sites when it crashes or gets compromised). You’re building up
technical debt either for yourself or those who will come after you.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
See also “What are the chances of that ever happening?”
(Clue: FMEA is your friend) and “What could possibly go wrong?” (See previous).<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
A lot of sub-optimal, or ‘bodge’ solutions are used because
there is a deadline to hit. IF this really is non-movable then at least log the
technical debt and fix it properly.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
John F Kennedy said ‘We choose to go to the moon in this
decade and do the other things – not because they are easy, but because they
are hard’.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
He set a deadline ‘in this decade’. What most people do isn’t
rocket science.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:RelyOnVML/>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml><![endif]-->
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false"
DefSemiHidden="false" DefQFormat="false" DefPriority="99"
LatentStyleCount="382">
<w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 9"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="header"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footer"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index heading"/>
<w:LsdException Locked="false" Priority="35" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of figures"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope return"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="line number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="page number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of authorities"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="macro"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="toa heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 5"/>
<w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Closing"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Signature"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="true"
UnhideWhenUsed="true" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Message Header"/>
<w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Salutation"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Date"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Block Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Hyperlink"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="FollowedHyperlink"/>
<w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Document Map"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Plain Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="E-mail Signature"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Top of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Bottom of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal (Web)"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Acronym"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Cite"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Code"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Definition"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Keyboard"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Preformatted"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Sample"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Typewriter"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Variable"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Table"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation subject"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="No List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Contemporary"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Elegant"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Professional"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Balloon Text"/>
<w:LsdException Locked="false" Priority="39" Name="Table Grid"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Theme"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 9"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" QFormat="true"
Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" QFormat="true"
Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" QFormat="true"
Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" QFormat="true"
Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" QFormat="true"
Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" QFormat="true"
Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" SemiHidden="true"
UnhideWhenUsed="true" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
<w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
<w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
<w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
<w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
<w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
<w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Mention"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Smart Hyperlink"/>
</w:LatentStyles>
</xml><![endif]-->
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-fareast-language:EN-US;}
</style>
<![endif]-->
<!--StartFragment-->
<!--EndFragment--><br />
<div class="MsoNormal">
If your excuse is ‘It’s hard for some people’ then maybe
you need to get better people . . .<o:p></o:p></div>
Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com0tag:blogger.com,1999:blog-3599749540293207351.post-53972170036786472552017-11-27T00:11:00.000-08:002017-11-27T01:45:21.022-08:00Booking the last 2 seats at the theatre - an alternative way of explaining ACID transactions . . . <h2>
How to book two seats when there’s only a row of three in a
cinema or theatre.</h2>
<div class="MsoNormal">
<o:p></o:p></div>
<h4>
(Or ‘An alternative and obscure way of explaining ACID
Transaction Processing’) </h4>
<div>
<br /></div>
<div>
"There are ways around that!" - David Lightman, Wargames.</div>
<div>
<br /></div>
<div class="MsoNormal">
You go to make a theatre booking. It’s busy and seats are ‘Selling
fast! Book now!’<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
There are 3 left for your favourite comedian/band/orchestra/throat
singers – and they are together! You and your favourite person can go to see
the show and sit together. Great!<br />
<br /></div>
<h4>
The following is an anthropomorphised version of the ‘conversation’
you and your browser will be having with the theatre website: </h4>
<div class="MsoNormal">
“L21 and L22 please”<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
“I’m sorry, you can’t do that – that would leave L23 free which
is a single seat and they are difficult to sell.”<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
“That’s your problem isn’t it? There are 3 left. I want two
of them. Is it harder to sell one seat or three?”<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
“We have a ‘no single seats left’ policy. Do you not have
another friend who would like to join you? It’s only £ker-ching for another
ticket<span style="mso-spacerun: yes;"> </span>. .”<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Yes, you do have another friend – and it’s called another
browser, or another computer.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<h3>
How to solve the ‘no single seats left problem’ </h3>
<h4>
In browser (or computer) 1:</h4>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
</div>
<ul>
<li>Log onto the theatre website and select the 2 seats you want
in the block of 3</li>
<li>Wait just at the point before it gives you the ‘no single
seats’ message.</li>
</ul>
<o:p></o:p><br />
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
(No one will want to book three, so you’re in no rush unless
anyone else knows this trick)<br />
<br /></div>
<h4>
Now, open up a new different browser/computer - this is browser/computer 2:</h4>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
This is not a separate window or tab, as you may share the
same cookies/session and it won’t work. e.g. if you started in Firefox, open
Chrome or Safari for this 2<sup>nd</sup> part.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
(Do NOT log in to the theatre website with your account or
userid/password for this part – you must buy tickets as a ‘visitor’ or ‘unregistered
user’)</div>
<div class="MsoNormal">
</div>
<ul>
<li>In the 2<sup>nd</sup> browser (or computer) , select the 1 ‘other’
seat in your row of three. </li>
<li>Important: Do not pay for the seat. Do not log in. Do not enter your
credit card.</li>
<li>Get as far as the ‘Your seat has been held for 15 minutes’ (or whatever) screen.</li>
</ul>
<o:p></o:p><br />
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
**REPEAT: DO NOT BUY ANYTHING AT THIS POINT IN BROWSER 2**<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<h4>
Go back to browser/computer 1:</h4>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
</div>
<ul>
<li>Click ‘select/buy my seats’ on your original selection – and
you’re in!</li>
<li>You are able to select the seats now, even though you couldn't before.You might need to refresh and re-select them on some sites, but it should work.</li>
<li>You can now pay at your leisure, book meals, donate to the
restoration fund, sign up to mailing lists and all the other fun things you can
do on theatre websites.</li>
</ul>
<br />
<div class="MsoNormal">
<o:p></o:p></div>
<h4>
<o:p> Go back to browser/computer 2:</o:p></h4>
<div class="MsoNormal">
</div>
<ul>
<li>Leave the seat selection/reservation on browser/computer 2
to expire.</li>
<li>(Just close the 2<sup>nd</sup> browser, or cllck ‘release tickets’
if there is such a button on the screen.) </li>
</ul>
<br />
<div class="MsoNormal">
Someone else can now buy the ticket. You’re not ‘locking’
that seat for the performance. It’s still available to be sold by the theatre
after the 15 minute ‘reservation’ expires. If it’s such a busy show, it’ll sell
anyway.<br />
<br /></div>
<h3>
Why does this work?</h3>
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
The theatre website sees you using the 2<sup>nd</sup>
browser as someone else trying to buy the single seat.</div>
<div class="MsoNormal">
They block the seat out
for 15 minutes for them to buy it.</div>
<div class="MsoNormal">
No one else can buy it during this period.
As far as the theatre is concerned, that seat is sold and they now only have 2
left.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
To prove this, after you ‘reserve’ the single seat in
browser 2, if you go back and search the site in browser 1 for tickets, you
will see that there are now only 2 left, not three. You can’t ‘see’ the seat
the ‘other person’ is in the process of buying.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
(This is the reason you ‘cue up’ the 1<sup>st</sup> browser
with your seat selection ready to go in the instructions above– anyone else looking at the same time
will see the two free seats and might grab them before you do)<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
If some site-developer wises up to this loophole and detects that there are two
browsers on the same computer (maybe by checking your IP address rather than a
session cookie), simply use your phone to ‘block out’ the single seat you don’t
want. Your mobile provider will have a different IP address range to your land-line/ADSL/Cable ISP and you will
still look like a different person.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Enjoy the show. You’re welcome.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<h3>
What does this have to do with ACID/XA transactions???</h3>
<i>(The following refers to 'database ACID transactions' this is equally applicable to other ACID/XA transaction systems such as MQ/Messaging, Application Servers such as IBM WebSphere, Mainframe transaction systems such as CICS etc etc)</i><br />
<br />
<div class="MsoNormal">
<o:p></o:p></div>
<div class="MsoNormal">
The ‘reserving the seat for 15 minutes’ is a ‘soft
transaction lock’ i.e. putting a marker on that seat to say that it is selected
and locked for update and that no-one else can update it (book the seat), or even see that seat to select it.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
This is how database row updates work under ACID (Wikipedia)
transactions. When you select for update, the rows you want to update are
locked until you commit the transaction. Most databases won’t let you lock for
15 minutes though. They do, however, have lock timeouts and will unlock the row
(give back the seat) if you take too long!<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
The ‘I’ in ACID stands for ‘Isolation’. This means that if
user 1 is updating the rows in the database, user 2 can’t see those updates
until user 1’s transaction is committed.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
This is the same as you not being able to see the single
seat in the theatre when the ‘someone else’ is booking it.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
This does give us a problem in databases. If user 1 has a
transaction lock on row 10 and user 2 tries to read row 10, what does user 2
see?<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
This depends on the transaction read settings in the client
and DB engine.<o:p></o:p></div>
<div class="MsoNormal">
Option 1: User 2 sees the row as it was before user 2
started their transaction<o:p></o:p></div>
<div class="MsoNormal">
Option 2: User 2 gets a ‘This row is locked’ error. More
likely, user 2’s request will wait until user 1’s update has finished. In
computer speeds this is rarely more than a few seconds (normally it’s a few
milliseconds). After that, they will see the row after user 1 has made their
updates.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml><![endif]-->
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-GB</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false"
DefSemiHidden="false" DefQFormat="false" DefPriority="99"
LatentStyleCount="382">
<w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 9"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="header"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footer"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index heading"/>
<w:LsdException Locked="false" Priority="35" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of figures"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope return"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="line number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="page number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of authorities"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="macro"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="toa heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 5"/>
<w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Closing"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Signature"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="true"
UnhideWhenUsed="true" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Message Header"/>
<w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Salutation"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Date"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Block Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Hyperlink"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="FollowedHyperlink"/>
<w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Document Map"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Plain Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="E-mail Signature"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Top of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Bottom of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal (Web)"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Acronym"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Cite"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Code"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Definition"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Keyboard"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Preformatted"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Sample"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Typewriter"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Variable"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Table"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation subject"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="No List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Contemporary"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Elegant"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Professional"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Balloon Text"/>
<w:LsdException Locked="false" Priority="39" Name="Table Grid"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Theme"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 9"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" QFormat="true"
Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" QFormat="true"
Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" QFormat="true"
Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" QFormat="true"
Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" QFormat="true"
Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" QFormat="true"
Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" SemiHidden="true"
UnhideWhenUsed="true" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
<w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
<w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
<w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
<w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
<w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
<w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Mention"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Smart Hyperlink"/>
</w:LatentStyles>
</xml><![endif]-->
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Calibri",sans-serif;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-fareast-language:EN-US;}
</style>
<![endif]-->
<!--StartFragment-->
<!--EndFragment--><br />
<div class="MsoNormal">
<br /></div>
Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com0tag:blogger.com,1999:blog-3599749540293207351.post-14317298499766594882017-06-01T01:00:00.003-07:002017-06-01T01:00:54.905-07:00Static IP addresses with VMWare Fusion on a MacOne of the issues with using VMWare fusion is that the IP addresses for your guest OS images can change when you restart them.<br />
<br />
Annoyingly, they can also change when you suspend/resume them!<br />
<br />
When creating a small 'farm' of machines and linking the hostnames together, this can be a pain in the proverbial!<br />
<br />
Luckily Will Warren has the solution here <a href="https://willwarren.com/2015/04/02/set-static-ip-address-in-vmware-fusion-7/">https://willwarren.com/2015/04/02/set-static-ip-address-in-vmware-fusion-7/</a> - cheers, Will!<br />
<br />
<br />
<br />Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com0tag:blogger.com,1999:blog-3599749540293207351.post-31869767198030301722017-04-18T00:02:00.002-07:002017-04-18T00:02:51.692-07:00<h2>
Life in the Hybrid Lane</h2>
<div class="MsoNormal">
<o:p></o:p></div>
<h3>
(or ‘Can you still be a petrol head if your car plugs into
the wall socket?’) </h3>
<div class="MsoNormal">
Due to a combination of:<o:p></o:p></div>
<div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -18.0pt;">
</div>
<ul>
<li><span style="text-indent: -18pt;">Extreme age – over 10 years</span></li>
<li><span style="text-indent: -18pt;">Extreme mileage, one at 165,000 miles and
another at 275,000 miles</span></li>
<li><span style="text-indent: -18pt;">Not wonderful fuel economy and fuel around £6/gallon
in the UK (Yes, really, if you’re reading this in the USA!),</span></li>
</ul>
<div class="MsoNormal">
we decided to trade in our beloved Mercedes E320 CDI and
Subaru Impreza WRX estate/wagon. Both gave superb service and will be much
missed: We drove all but 75,000 miles of their total in them with hardly any
breakdowns (one flat battery, one collapsed suspension strut, couple of blown
tyres). I don’t know if I’ll ever own anything as fast as that Subaru again!<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
So what to choose? I’m not exactly a big ‘green’ fan – if
you want to eschew the trappings of modern civilisation, then fine – don’t
force it on me. However, if you have a technical solution that gives me the
same (or better) quality of life which also fits with your ‘green’ agenda then
no problem.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
A pure battery car/’EV’? Everything apart from the Tesla
models has woeful range. If you can’t get in and do at least 200 miles in one
journey when you need to, then no thanks. We looked at the Tesla model ‘S’ but
when you need a long journey, with heating/air con on at a decent speed on the
motorway (freeway) it still can’t cut it for range we need. And the price! Nice
cars though – go check them out – the staff in Bristol, UK were very friendly.
The performance is staggering, they have 4WD and who can’t love a car with a
‘ludicrous’ mode?<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Hybrid? I had a Toyota Prius as a rental once in the USA for
about 6 weeks. Good economy, OK-ish drive but would I want one on my drive at
home? No thanks. (I’ve nothing against Toyotas: we did look at the Rav4
Hybrid). What other hybrids are about?<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
How about the new Mercedes E350e plug-in hybrid? Really nice
(go check it out with the new ‘glass cockpit’) but it costs a <i style="mso-bidi-font-style: normal;">lot</i> brand new and it only has a 30 mile
range on batteries – after which the economy drops off markedly for
long-distance motorway miles. For someone who thinks a 150 mile drive is a
‘short hop’ and does a LOT of miles on business, this wasn’t really an option,
although I’m still considering it next time around.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
For my wife, who normally does round trips of 20/30 miles, a
plug-in hybrid is a good option: electric most of the time but with the ability
to do long-haul on petrol when needed. Would you want 2 Labradors and driving
through muddy fields in an E class though?<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Mercedes used to do an E300 diesel hybrid. OK, it doesn’t
plug-in but it has the Prius-like regenerative battery technology and it uses
the batteries as a KERS style boost when you press the loud pedal. The result
is that the 2.2 litre diesel hybrid is actually faster than my old 3.2 litre
diesel. It also does a lot more MPG, especially once you’ve got to the end of
your motorway cruise and you’re into city traffic. Best of all, it looks and
feels like a regular E class Merc. It’s not a ‘green car, there’s just a
discrete ‘Hybrid’ badge on the back. The battery is in with the engine and
gearbox and you don’t lose any boot (trunk) space.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Did I mention that ‘Mercedes used to do them’? You can get
them second hand and they’re not badly priced. I got one four years old with
40K miles from Mercedes in Bristol (I’m prepared to travel to buy cars). Service
there was really good BTW: ask for Roy Humphreys.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
New Merc, same as the old Merc, but with all the updated
toys/electronics, new light/dark leather and 235K less miles on the clock.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
So that’s the Merc, what about the Subaru? For that we had
to switch religions (if you followed WRC rallying in the McRae/Burns/Makkinen
years you’ll know why). We swapped our Subaru for a Mitsubishi! I can feel my
membership of scoobynet.co.uk being revoked as I type. . .<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
The Mitsubishi Outlander PHEV is a plug-in 4X4 SUV hybrid
with a claimed 30 mile battery range; but crucially it also has a 45 litre
petrol (gas) tank. Run out of battery? No worries, the engine takes over and
you pretty much don’t even notice. Run out of fuel? Petrol is available pretty
much anywhere – no range anxiety! Worries about the batteries? 8 year warranty
(in addition to 5 year on the car).<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Best of all they’re dirt cheap used. We picked a 1 year old
example up with 13K miles on the clock (with a choice of colours!) under half
new price from Masters Mitsubishi of Croydon. Again, service was superb (ask
for Matthew) and we were happy to travel to get the good deal.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
So, what are they like in practice? What about the claimed mpg?
What are the pros and cons? Do you need to trade in your microwave for a camp
fire to ‘go green’? Did we sacrifice anything for fuel economy and cheaper car
tax?<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Easiest is the Merc. It’s an E class with all that goes
along with it, including (in my experience) the wonderful Mercedes dealer
service. We use Winchester (ask for John in service). It looks like an E class,
drives like an E class, has that ‘Aaah, this is nice!’ feel to it when you get
in after a long day at the office and gives between 47 and 53 mpg so far in
mixed usage. <o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Just turn the key, hit the loud pedal and go. No hassle and
the performance is also lots of fun – the ‘SE” seems to have the AMG suspension
and it’s all specced up with COMAND Nav/DVD, sunroof, light leather, through
load, voice control etc etc.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
If you have (or have had) an E class, it’s one of those. The
real eco-benefit is in traffic and stop/start conditions when the hybrid
battery really kicks in and the engine switches off. It also does it on the
motorway: If you’re coasting downhill, it just kills the engine – watch the
rev-counter drop to zero at 70mph! Quite scary! But watch the mpg shoot up at
the same time.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
What about the Mitsu? Well, it’s not going to match the sub
6 second acceleration of a Prodrive chipped Subaru WRX (even though it’s from the
guys who brought you the Evo) but for a 1.8 tonne SUV that’s effectively a 7
seater (think Hyundai Santa Fe / VW Tuareg size) it seems to drive much better
than its official performance figures would suggest, although it can run out of
steam accelerating at motorway speed. You can corner positively and it’s very
drivable – it doesn’t feel like you’ve compromised on fun. It also gives full
torque from 0mph so it’s worryingly quick off the line – although only to about
20mph!<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
It’s also completely silent which is very disconcerting
initially. it’ll do the run-silent-on-batteries trick up to 75mph and it is (as
Mitsubishi say) not that noticeable when the engine starts. It starts when it
needs to and stops when it doesn’t.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
No manual intervention required. Two pedals, accelerator and
brake. Just drive it like a normal (huge) auto and let the car get on with it.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
And we’ve got over 140MPG out of it! Yep, One-Hundred and
Forty, not just forty!<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
OK, that wasn’t just on petrol, we did have to add
electricity. We charge it up at home and fully charged it registers about 20 to
23 miles of electric range – which seems pretty accurate in our experience. To
charge it up is 10KW of power, which costs us just over £1. Given that petrol
is around £6/gallon, then that’s financially 120mpg if you can run it on the
batteries alone.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
We do some longer runs (We’ve taken it on 500 mile round
trips) and the economy really drops off when you don’t charge it up – around 35
to 40 mpg depending on motorways etc, but that’s still not bad for nearly 2
tonnes of SUV. You still get a 300 mile range and petrol is widely available
when you run low.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
When you’re doing 20 mile/day trips though, it really makes
sense. 950 miles out of 30 litres of fuel is really quite astounding.
Considering we used to get 30mpg (or less) out of the Subaru, it’s very much
lighter on the pocket! And that’s not mentioning the reduction of the road tax
from £285 to £0 (it went from £285 to £20 on the Merc)<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
You get into the habit of plugging it in whenever you’re
home (the UK government and Mitsubishi subsidise a dedicated 7Kw charging point
at home which does it in about 3 hours, or you can just plug it into a regular 3-pin
socket for a 5 hour charge) and just keep topping it off. We can go for days
without using any fuel – in fact Mitsubishi tells you to use 20 litres of fuel
per month to keep everything flushed through as some people run them purely on
batteries. There’s a rumour of someone getting 4000+ miles out of a tank . .<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
It’s pretty big compared to what we were used to and there
is loads of room, especially in the back as the 6<sup>th</sup> and 7<sup>th</sup>
seats aren’t there due to the batteries. Some reviews have said the cabin is “sparse”
and “plasticky”, but it’s got Leather, Sat Nav, Bluetooth/Phone connectivity,
DVD player, power seats, sunroof, Xenon lights, voice control – good enough for
us and better than our ‘old’ Subaru was. Maybe it might seem “cheap” if you
paid £40K for it, but for sub £20K, it’s really not too bad!<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Can’t comment on reliability yet as we’ve only had them for
a few months. Previous experience with the last Merc was ‘bulletproof’ and I’m
assuming Mitsubishi is up there with Subaru build quality. If it’s not, I’ve
the balance of a 5 year warranty. Not had to service it yet, so can’t comment
on our local Mitsubishi dealer’s (Winchester) service department although their
sales dept seemed very friendly when we went looking to buy the car in the
first place.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
Any regrets? Losing the ‘Turbo nutter’ performance of the
‘Scooby-Doo’ and we’ll also miss the superb service from Simpson’s Subaru in
Swindon (ask for Karen). The Merc is a pure upgrade and it’s more and better of
the same. The Mitsu is nice to have something ‘different’ – it’s all good so
far.<o:p></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
So have we gone ‘green’? Not really, it was a purely
economic decision. If you want to change behaviour, incentivise people the
right way and see them change – we did. The best bit is when a ‘green’ person
yells at me for driving a ‘gas guzzler’ SUV. It’s great to say ‘it’s electric!
How is your old junk-mobile saving the planet then?’</div>
Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com1tag:blogger.com,1999:blog-3599749540293207351.post-92114696588444605662016-11-22T09:24:00.003-08:002016-11-22T09:24:36.181-08:00Mac Safari running slow / slow to start loading page?My Mac Safari has been running slowly for a bit - it seems to take ages to start loading the page.<br />
<br />
Firefox has no such problem - so I'm pretty sure my ISP is OK (I have fibre at approx 40Megs)<br />
<br />
So, with thanks to <a href="http://www.webnots.com/fix-safari-slow-loading-pages-mac-os-x/">http://www.webnots.com/fix-safari-slow-loading-pages-mac-os-x/</a> I found the following seems to have fixed my problem.<br />
<br />
Disable the DNS Prefetching in Safari:<br />
<table class="crayon-table" style="margin-left: -21px;"><tbody>
<tr class="crayon-row"><td class="crayon-nums " data-settings="hide"><div class="crayon-nums-content" style="font-size: 16px !important; line-height: 20px !important;">
<div class="crayon-num" data-line="crayon-58347b21a965d626196810-1">
1</div>
</div>
</td>
<td class="crayon-code"><div class="crayon-pre" style="line-height: 20px !important; tab-size: 4;">
<div class="crayon-line" id="crayon-58347b21a965d626196810-1">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="crayon-e">defaults </span><span class="crayon-e">write </span><span class="crayon-v">com</span><span class="crayon-sy">.</span><span class="crayon-v">apple</span><span class="crayon-sy">.</span><span class="crayon-e">safari </span><span class="crayon-v">WebKitDNSPrefetchingEnabled</span><span class="crayon-h"> </span><span class="crayon-o">-</span><span class="crayon-t">boolean</span><span class="crayon-h"> </span><span class="crayon-t">false</span></span></div>
<div class="crayon-line" id="crayon-58347b21a965d626196810-1">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="crayon-t"><br /></span></span></div>
<div class="crayon-line" id="crayon-58347b21a965d626196810-1">
<div class="crayon-line" id="crayon-58347b21a965d626196810-1" style="font-size: 16px !important;">
(You can re-enable it by doing:</div>
<div class="crayon-line" id="crayon-58347b21a965d626196810-1" style="font-size: 16px !important;">
<table class="crayon-table" style="margin-left: -21px;"><tbody>
<tr class="crayon-row"><td class="crayon-nums " data-settings="hide"><div class="crayon-nums-content" style="font-size: 16px !important; line-height: 20px !important;">
<div class="crayon-num" data-line="crayon-58347b21a9669276716482-1">
1</div>
</div>
</td><td class="crayon-code"><div class="crayon-pre" style="line-height: 20px !important; tab-size: 4;">
<div class="crayon-line" id="crayon-58347b21a9669276716482-1">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><span class="crayon-e">defaults </span><span class="crayon-e">delete </span><span class="crayon-v">com</span><span class="crayon-sy">.</span><span class="crayon-v">apple</span><span class="crayon-sy">.</span><span class="crayon-e">safari </span></span><span class="crayon-v"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">WebKitDNSPrefetchingEnabled)</span></span></div>
<div class="crayon-line" id="crayon-58347b21a9669276716482-1" style="font-size: 16px !important;">
<br /></div>
</div>
</td></tr>
</tbody></table>
<div class="crayon-line" id="crayon-58347b21a9669276716482-1">
<span class="crayon-v">Simple as that - don't even need sudo! Just restart Safari and off you go.</span></div>
<div class="crayon-line" id="crayon-58347b21a9669276716482-1">
<span class="crayon-v"><br /></span></div>
<div class="crayon-line" id="crayon-58347b21a9669276716482-1">
<span class="crayon-v">(For info, MacBook Pro 15" running Sierra)</span></div>
</div>
</div>
<div class="crayon-line" id="crayon-58347b21a965d626196810-1" style="font-size: 16px !important;">
<span class="crayon-t"><br /></span></div>
</div>
</td></tr>
</tbody></table>
Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com1tag:blogger.com,1999:blog-3599749540293207351.post-25479270967558500082016-11-01T05:54:00.001-07:002016-11-01T05:54:39.534-07:00Sorting eMail into folders? Why would you do that?I picked this up from listening to 'More or Less' on BBC Radio 4 (podcasts are available here <a href="http://www.bbc.co.uk/programmes/p02nrss1/episodes/downloads">http://www.bbc.co.uk/programmes/p02nrss1/episodes/downloads</a>).<br />
<br />
Since I got a large (multiple gigs) allocation of eMail space, my archiving/organising of email has effectively fallen to zero. I can search for people and subjects and grab the threads I need most of the time.<br />
<br />
I get pushback on this approach from the 'Inbox Zero' brigade but it seems to work for me - after all, I don't organise my twitter or facebook feeds - I just let them scroll by - same with eMail - it'll be there when I need it.<br />
<br />
Finally I have some support for my approach - and from IBM Research no less! MIT Technology review introduces and links to the research paper here: <a href="https://www.technologyreview.com/s/424056/stop-organizing-your-e-mail-says-study/">https://www.technologyreview.com/s/424056/stop-organizing-your-e-mail-says-study/</a><br />
<br />
As with all things, your mileage may vary but at least I can feel less guilty about the '>999' message count on my mail icon . . :-)<br />
<br />
<br />
<br />
<br />Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com1tag:blogger.com,1999:blog-3599749540293207351.post-78502090386497501542016-10-26T03:50:00.001-07:002016-10-26T05:36:34.147-07:00Quick reminder on self signed certificate generationPurely a quick reminder to myself on how to generate self-signed certificates . .<br />
<br />
This assumes you have openssl - example here works on both Mac and Linux. .<br />
<br />
Generate the private key<br />
<div style="background-color: white; font-size: 11px; line-height: normal;">
<span style="font-family: "courier new" , "courier" , monospace; font-variant-ligatures: no-common-ligatures;">openssl genrsa -des3 -out privatekey.pem 2048</span></div>
<div style="background-color: white; font-size: 11px; line-height: normal;">
<br /></div>
<div style="background-color: white; font-size: 11px; line-height: normal;">
The -des3 prompts for a passphrase, the -out <<filename>> generates the key, the 2048 is the number of bits</div>
<div style="background-color: white; font-family: Menlo; font-size: 11px; line-height: normal;">
<br /></div>
Generate the certificate signing request (csr)<br />
<div style="background-color: white; font-size: 11px; line-height: normal;">
<span style="font-family: "courier new" , "courier" , monospace; font-variant-ligatures: no-common-ligatures;">openssl req -new -sha256 -key privatekey.pem -out csr.csr</span></div>
<div style="background-color: white; font-size: 11px; line-height: normal;">
<br /></div>
<div style="background-color: white; font-size: 11px; line-height: normal;">
<span style="font-family: inherit;">The -sha256 avoids worrying about whether you'll get a SHA-1 generated with an old version of openssl. -key <<filename>> points to the private key, -out <filename> generates the csr file</span></div>
<div style="background-color: white; font-size: 11px; line-height: normal;">
<span style="font-family: inherit;"><br /></span></div>
Generate the certificate signing request (csr)<br />
<div style="background-color: white; font-size: 11px; line-height: normal;">
<span style="font-family: "courier new" , "courier" , monospace; font-variant-ligatures: no-common-ligatures;">openssl x509 -sha256 -req -days 9999 -in csr.csr -signkey privatekey.pem -out certificate.pem</span></div>
<div style="background-color: white; font-family: Menlo; font-size: 11px; line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"><br /></span></div>
<div style="background-color: white; font-size: 11px; line-height: normal;">
<span style="font-family: inherit;">X509 is the certificate type (Note no dash before this parameter), -sha256 avoids SHA-1, -days is how long the certificate is valid for, -in <<filename>> is the CSR file, -signkey <<filename>> is the private key and -out <<filename>> actually generates the certificate to a file.</span></div>
<div style="background-color: white; font-size: 11px; line-height: normal;">
<span style="font-family: inherit;"><br /></span></div>
Check the CSR<br />
<div style="background-color: white; font-size: 11px; line-height: normal;">
<div style="line-height: normal;">
<span style="font-family: "courier new" , "courier" , monospace; font-variant-ligatures: no-common-ligatures;">openssl req -in csr.csr -text -noout</span></div>
<div style="line-height: normal;">
<span style="font-family: inherit;">Make sure this shows the SHA256 (older versions of SSL may default to SHA1)</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;"><span style="font-family: -webkit-standard; font-size: small;">Check the certificate</span></span><br />
<span style="font-family: inherit;"></span><br />
<div style="line-height: normal;">
<span style="font-variant-ligatures: no-common-ligatures;"><span style="font-family: "courier new" , "courier" , monospace;">openssl x509 -in certificate.pem -text -noout</span></span></div>
</div>
</div>
<div style="background-color: white; font-family: Menlo; font-size: 11px; line-height: normal;">
<br /></div>
Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com0tag:blogger.com,1999:blog-3599749540293207351.post-20142797468792753932016-05-20T07:21:00.001-07:002016-05-24T08:15:20.275-07:00Is parentalcontrolsd eating your memory on your mac?If you have a Mac, take a minute and run the Activity Monitor<br />
<br />
(quickest way for me is to type: Cmd-Space and type 'activity' - good old spotlight)<br />
<br />
Do you see a process called 'parentalcontrolsd'? If so, take a look at it:<br />
<br />
If it's anything like on my Mac, you may now be saying 'HOWWW much memory?'<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfZKoTkBjbdPvr6bDlr6v9Tiqxf5Do9QyEJpdM4rRZx7frLZ1hRg0YDJtVrFqxFWTBNGS6snt56FnmBZBxZfIAmkNbycIOqQff3i_VYUhWWYU6ktBhhDllWhMgQfskqEkhNgds-VYYPEw/s1600/Screen+Shot+2016-05-20+at+15.09.02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="241" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgfZKoTkBjbdPvr6bDlr6v9Tiqxf5Do9QyEJpdM4rRZx7frLZ1hRg0YDJtVrFqxFWTBNGS6snt56FnmBZBxZfIAmkNbycIOqQff3i_VYUhWWYU6ktBhhDllWhMgQfskqEkhNgds-VYYPEw/s320/Screen+Shot+2016-05-20+at+15.09.02.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
2.43Gb virtual? To do what? I don't even have Parental Controls switched on! When I search the web, it seems like no-one else with this problem does either - and there seem to be a lot of people having similar problems.<br />
<br />
I'm on El Capitan (10.11.5) but I've had this for a long time. The weird thing is, it's on my 'work' Mac (15" pro retina) but not on my BYOD one that I also use for work and which has much the same software stack (13" pro retina). I've tried pretty much all the internet suggestions and got a whole load of nowhere.<br />
<br />
Anyone any ideas?<br />
<br />
At the moment, all I can offer is this: Macs have two useful commands for processes. Go to 'terminal' to use them:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">pgrep parentalcontrolsd </span><span style="font-family: inherit;">(or even just </span><span style="font-family: "courier new" , "courier" , monospace;">pgrep parental</span><span style="font-family: inherit;"> - it works with partial names)</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">If you get a number back, then parentalcontrolsd is running.</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">Then you need:</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">sudo pkill -9 parentalcontrolsd </span><span style="font-family: inherit;">(you'll get prompted for your password - you need sudo to run this as root)</span><br />
<span style="font-family: inherit;"><br /></span>
<span style="font-family: inherit;">This kills it stone dead (as you can see in the screenshot). Use pgrep to check.</span><br />
<span style="font-family: inherit;"><br /></span>
It's OK to use pkill even if it doesn't find the process - I keep it in a terminal window so I can just use 'up arrow' to run it when I need it. Which I do, because it keeps coming back . . .<br />
<br />
More enlightened people will probably be able to create a scheduled job using cron or some such to kill it every hour or so.<br />
<br />
**update** I've tried using Automator to run the pkill every hour or so - only problem is that I can't get automator to run a script as root/admin so I get permission errors . .any ideas? **update**<br />
<br />
Even more enlightened people probably have a proper cure - if you do, please let me know!Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com8tag:blogger.com,1999:blog-3599749540293207351.post-58497996155905030072016-05-12T04:12:00.000-07:002016-05-12T04:12:20.033-07:00Microsoft Office / Visio not activating even though you have a license?I use Visio 2010 at work- this is not about the product or the version!<br />
<br />
We also have Office 365, but that doesn't include Visio - so I need to order it. The company obtains a license and sends me a link to an automated download/installer.<br />
<br />
(For those wondering, yes, I have a Mac. Yes I also have a Windows VMWare image under Fusion)<br />
<br />
And to be fair, it validates my internal ID, downloads and installs Visio, with the usual 'please reboot'.<br />
<br />
Only problem is, Visio starts up with this:<br />
<br />
"Microsoft Visio 2010 cannot verify the license for this product. You should repair the Office Program by using Control Panel."<br />
<br />
(I can't screen-shot the dialog box as I now don't get it any more - sorry)<br />
<br />
Control Panel offers a 'repair' but that doesn't work. Neither does uninstall/reinstall and plenty of rebooting of windows - thank goodness it's quick under VMWare on the Mac!<br />
<br />
Control Panel lets me enter my license key: Nope, can't do that - company 'embeds' it somehow in the download - I don't know what it is.<br />
<br />
Anyway, after LOTS of googling and thanks to many people at the Microsoft support forums, this worked for me.<br />
<br />
1. Run cmd.exe, but right-click and use 'run as administrator'<br />
2. Navigate to c:\Program Files (x86)\Microsoft Office\Office14<br />
3. Type 'cscript ospp.vbs /act' (without the single quotes)<br />
<br />
Easy and intuitive as I think you'll agree! YMMV - it worked for me . . . .<br />
<br />Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com2tag:blogger.com,1999:blog-3599749540293207351.post-25929826183636858442016-04-25T08:35:00.002-07:002016-04-25T08:35:35.884-07:00Being a good audience - how to attend a presentationI've just come back from another technical conference. I presented on a number of topics and I also attended a fair few as well.<br />
<br />
One thing I noticed as both a presenter and an audience member is that the behaviours of audience members can be very diverse.<br />
<br />
I'm not talking about the 'usual' categories of 'the snowman' who won't show any interest or 'the expert' who wants to show how they know more than the presenter - this is a bit different.<br />
<br />
<h3>
Please turn up on time</h3>
<div>
I know that conferences are hard to find your way around, but as a presenter, we're instructed to start on time (really, we are: at one conference, there was a huge loudspeaker announcement to 'Please start your presentations NOW!' before every session). If nothing else, we need to finish on time.</div>
<div>
<br /></div>
<div>
If your inter-hotel bus was late etc, then OK - please try and 'sneak in' at the back. I'll try and help you out by pointing out seats but a constant stream of people is really hard to manage. And please don't do the 'OK, I need to go now, I'm just heading into a session' part of your call when you're actually through the door.</div>
<div>
<br /></div>
<h3>
Do your email outside - or at the back</h3>
<div>
Believe it or not, it's very obvious if you're 'making notes' or just doing your email/day job. I don't know how to describe it, but it is. If you <i>need</i> urgently to have your laptop open then please at least sit at the back.</div>
<div>
<br /></div>
<div>
If you're doing the 'annotate the slides' thing, then that's fine, although if you have a tablet, that's better than an open laptop. I don't know why, but it is.</div>
<div>
<br /></div>
<div>
And a kindle, is very obviously a kindle. You're reading a book, right? There are other places out of the rain and it's especially annoying if some people are standing . ..</div>
<div>
<br /></div>
<h3>
Questions as you go - or at the end?</h3>
<div>
Find out. My preference is to take them as I go as I can try and work out what's of interest to the audience and tailor my presentation to you. Others have a strict time-keeping policy that asks to keep them to the end. It's OK at the start to say 'questions now or later'?</div>
<div>
<br /></div>
<div>
Also, it's strange but even though you think you've asked loudly, not everyone can hear you. I'm not trying to insult you by repeating your question, but it's that I'm 'mic'd up (amplified) and you're usually not. Not everyone else can hear you and they probably would like to hear both your question and the answer.</div>
<div>
<br /></div>
<div>
Again, if you didn't hear the question, please call out - I sometimes forget to do the 'OK, the question was . .' part and go straight into an answer. If the answer was 'Yes, it is!' then it doesn't mean much on its own.</div>
<div>
<br /></div>
<div>
If a question turns into a discussion, don't be offended if you're asked to 'leave it to the end' or 'take it off-line'. Presenters are paranoid about finishing on time - come chat at the end, we'll try and get you an answer if we can.</div>
<div>
<br /></div>
<div>
<h3>
Taking pictures</h3>
<div>
I'm flattered if you like one of my slides so much that you'd like to save it for later use. Really. And I'll try and hold it on the screen for you but please don't take longer than about 15 secs to focus up.</div>
</div>
<div>
<br /></div>
<div>
The exception is if the slide says 'Confidential' or something similar - it's usually polite to ask.</div>
<div>
<br /></div>
<div>
We do try and 'upload our material' where possible, so you should be able to get it if you need it, but be aware we're often tweaking it until the last minute, so you might not be able to get it until after the conference - sorry!</div>
<div>
<br /></div>
<h3>
Feedback - yes please!</h3>
<div>
I know you'll need to fill in what seems to be about 100 feedback forms at the end, but they really are useful so I can get better next time. One request: Please differentiate between something I can do something about and something I can't. If the room was too cold or there weren't enough seats or there was no drinking water in the room - sorry but that's out of my control, usually.</div>
<div>
<br /></div>
<div>
On feedback, if you can't hear me, I'm talking too fast, if the slides are blurred or if I'm standing in front of the projector (it happens!) then please call out. Those kind of things I can fix right then right there.</div>
<div>
<br /></div>
<div>
At the end of the presentation, please come up and chat - we really like to hear from you and we'll stay as long as we have time - usually we'll only disappear if we have to present in the next 'slot'. We present on things we are interested in, so we're happy to talk for a long time!</div>
<div>
<br /></div>
<h3>
Sorry - not my thing!</h3>
<div>
If you find you're in the wrong presentation (I've done this!) either by a bad room number or by the abstract becoming a lot clearer in the title slide (e.g. 'Performance Tuning Good Practices' is actually 'Performance tuning the XZDF2300 noodleplooker appliance') then it's fine to walk out. If the presentation hasn't started, it's OK to let the speaker know why - rather than having them think you just don't like them.</div>
<div>
<br /></div>
<div>
Again, it's fine to walk out in the first 5 mins (really!) but if you're not sure a presentation is 'for you' then please sit at the back and 'sneak out'</div>
<div>
<br /></div>
<div>
<h3>
Finally, don't bang the door!</h3>
</div>
<div>
If you need to leave for whatever reason, even if only a bathroom emergency, please 'soft close the door'. Nothing makes <i>everybody</i> look around when there is a huge WHAM! when you let the door go.</div>
<div>
<br /></div>
<div>
Any pet hates? Anything to add to the 'things I don't like about presenters at conferences?' - hit the comments!</div>
<div>
<br /></div>
<div>
<br /></div>
<h3>
<br /></h3>
Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com1tag:blogger.com,1999:blog-3599749540293207351.post-45993206877471452932016-04-04T03:26:00.000-07:002016-04-04T03:50:04.646-07:00Getting the Best from your Consultants - a 'just my 2c' guideI work as a 'Consultant', although I have a number of other job roles and titles e.g. 'Solution Architect' 'Subject Matter Expert' 'Agile Coach' 'Business Process Management Expert' etc etc.<br />
<br />
For the majority of my time, I work on client/customer sites and locations, not those of my direct employer. This makes my relationship with my customer somewhat different to that of a permanent employee or 'permi'.<br />
<br />
Some companies use a large number of consultants on a pretty much constant basis - others employ them on an ad-hoc basis to solve point problems.<br />
<br />
One thing I've noticed over many years of doing this is how effectively different organisations use me whilst I'm working for them. Obviously I always try to do my best for them and to leverage as much value as I can for them during my engagements, but it's sometimes easier to drive value in one place than in another.<br />
<br />
Are companies aware of what helps a consultant help them? Here's my 'starter for ten' list (in no particular order)<br />
<br />
<h3>
Who, Where and When</h3>
<div>
You might have multiple offices. You might start early or late. You might want me to work with one person exclusively or with a large number of people doing various different things.</div>
<div>
<br /></div>
<div>
I'm very happy to do either - please let me know. Remember, I don't know your company. If you have 3 London offices, let me know which one I'm due at. If Sarah doesn't work Mondays, that's useful to know as well. If you start at 08:00 and finish at 16:30, then I can do that. If you want me out of your hair until 10:00 then that's fine too.</div>
<div>
<br /></div>
<div>
If the person who wants me to come and help isn't the person I'll be working with, please let the latter know who I am, why I'm there (especially that I'm not there to replace them!) and what I'm meant to be doing. It's awkward on both sides when I turn up to ask for Carol and Carol says 'nice to meet you - who are you and why are you here?'</div>
<div>
<br /></div>
<div>
Finally, if you're having an off-site meeting next week, or there's nothing to do next Monday then let me know and I won't turn up and bill you for the day. . this is also useful if you're multi-country and next Wednesday is your offshore-team's bank holiday and no-one is in to support performance testing for example.<br />
<br /></div>
<h3>
Desks, parking, power, passes, network</h3>
<div>
If your office is in the middle of nowhere (i.e. not city centre) then parking spaces are pretty much essential, especially if you want me to work flexible hours. If you're in a city and it's walkable or on the tube in London then fine. Also regarding parking, there's often only me so I can't car share, no matter how 'green' I'd like to be.</div>
<div>
<br /></div>
<div>
Desks and chairs are useful too. I appreciate that I'm an 'extra person' that you really don't have space for and I'm OK sharing a desk, but I'm going to need to sit down, power a laptop and put it down to type.</div>
<div>
<br /></div>
<div>
Internet access is essential if you want me to send/receive emails to and from you. Also I can look up our support/fix/documentation etc etc database and connect to all of my co-workers worldwide, but only if I can get online. I do have 3 and 4G but I'm not going to use them to download 100s of mb of patches and updates for you over them. And that's assuming you have 3G/4G coverage on your site.</div>
<div>
<br /></div>
<div>
Passes/Badges are essential in a secure environment - but paper ones that won't open any doors at all (especially in and out of the office, or to the toilets/restrooms etc) can really slow things down - especially if I need to be escorted everywhere by one of you.</div>
<div>
<br /></div>
<div>
Tailgating is not an option, even if 'everybody does it' - our corporate guidelines say that we don't. Also I'm not going to 'just borrow your badge' - thanks for trying to be helpful, but I can't do that either. Hopefully it's obvious why - I'm not being awkward.<br />
<br /></div>
<h3>
'Things everybody knows'</h3>
<div>
If there's a fire drill every Wednesday, if Friday is casual day (but 'casual' still means no shorts), if birthdays are 'bring cakes' or everyone leaves at 2pm on the last Friday of the month, please let me know - happy to go along with most things.</div>
<div>
<br /></div>
<div>
(Be aware I will often need to pack clothing on a Sunday night, so finding out next Friday is 'come in fancy dress for charity day' on the Wednesday is too late . .)</div>
<div>
<br /></div>
<div>
Similarly "we know it says 'hot-desking' but most people sit in the same place every day so please ask" or "The coffee is provided personally - please put 20p in the tin when you make one" are things that are always useful to avoid causing offence.<br />
<br /></div>
<h3>
Logins, access, code, docs</h3>
<div>
If you want me to review code, how can I get copies? I can provide shared, secure file areas for us to exchange data, but are you allowed to connect to them? If you want to email them, how big are they? Can your mail system cope with the size? How will you encrypt them?</div>
<div>
<br /></div>
<div>
Ditto for logs and dumps - JVM heap dumps are often in the GBs. How can I look at them? I have tooling with me and I can also help you download the same but we'll need to work together on this one.</div>
<div>
<br /></div>
<div>
Ditto for reading documents, specs etc. I'll bring MS Office and things like Visio viewers with me. I've also got access to all the software my company makes, but if you have a 3rd party product with no import/export filters, please have a think about how I'm going to read it - maybe print to .pdf?</div>
<div>
<br /></div>
<div>
If I need to be on your network, I'll need some equipment to do it - do you really want me to plug in my laptop to your intranet?</div>
<div>
<br /></div>
<div>
Credentials as well. I'm not going to 'just borrow your password' as that breaks all sorts of rules, probably for both my company and yours.</div>
<div>
<br /></div>
<div>
On the subject of credentials, often I really don't want to know what the 'root' or 'admin' password is. In most cases, I don't want production update access either. I'll advise you on what changes or updates to make and help you test on a lower environment, but production changes need to go through your change processes and be enacted by your prod change team (I'm happy to show them what to do - just not to log on and do it in PROD).</div>
<div>
<br /></div>
<div>
If you have sensitive data, I really don't want it on my system - in fact I'm not actually allowed to have it on there. If your logs have your customer's names and addresses in them, I really can't have that on my system.<br />
<br /></div>
<h3>
Objectives and flexibility</h3>
<div>
It's your money you're paying - let me know how I can help and I'll be as flexible as possible, but please bear in mind why you wanted me on-site in the first place.</div>
<div>
<br /></div>
<div>
If you have a set of things that you need me to do, I'll track them, tick them off and let you know how it's all going. If you think of other things whilst I'm here, I'm happy to consider them but bear in mind that your priorities may now shift.</div>
<div>
<br /></div>
<div>
I'm happy to be a 'walking encyclopaedia' or 'Can you come to a meeting and give us your thoughts?' but bear in mind that's all taking time away from 'Please review our enterprise architecture strategy' if that's my main goal.<br />
<br /></div>
<h3>
'Tapping on the shoulder' or 'Have you got a minute?' - know your consultant!</h3>
<div>
This is a contentious one and varies from consultant to consultant. Some people (e.g. me) are happy to chop and change from activity to activity and to be engaged on a 'please turn up and we'll form an orderly queue at your desk to ask you things' basis.</div>
<div>
<br /></div>
<div>
For other people, it drives them up the wall! These people need a clear statement of work and a list of objectives that they can deliver against. Consider how your organisation works and the people within it - then try and engage a consultant that fits your style.<br />
<br /></div>
<h3>
Working 'n' days/week</h3>
<div>
If you want me for 2 days per week, that's fine. Let's agree on those days and I'll be there. I can even be a bit flexible with enough notice - just ask!</div>
<div>
<br /></div>
<div>
On the other hand, if I work for you on Tuesdays and Wednesdays, I can't attend your team update call on Fridays as I'll be working for someone else. In exactly the same way that if I'm working for you, I can't attend their team update call either.</div>
<div>
<br /></div>
<div>
If I'm working on something internal and you want a quick answer to a mail, then I'll try and accommodate you - but I can't spend a couple of hours on it necessarily.<br />
<br /></div>
<h3>
Finally - if you don't like what I'm telling you, or it just isn't working out, let's go our separate ways . .</h3>
<div>
I'm a consultant - I'm here to bring you the benefit of my and my company's knowledge. I'll advise you on what I think is best for you and your company - but bear in mind it might not be what you want to hear. (See the<a href="http://ihaveadeckforthat.blogspot.co.uk/2015/10/the-lord-wessex-effect-and-best-practice.html"> 'Lord Wessex Effect'</a>).</div>
<div>
<br /></div>
<div>
If you want me to approve/'rubber stamp'/endorse or similar something you're produced then (a) both I and my company have to agree with it 100% and (b) it takes a lot of process (and sometimes legal) to put that stamp on there. Obviously if I or we disagree with it, we will say so.</div>
<div>
<br /></div>
<div>
If you disagree with what I'm advising you (and that's fine BTW!) then say so. I might have alternatives, or often there might be something that I'm not aware of in your specific situation that makes a difference.</div>
<div>
<br /></div>
<div>
On the other hand, if you just don't like it, or don't want to do it then just say - you're not going to hurt my feelings. I'll leave a copy with you just so we know where we both stand and then either I can work on something else or we can end the engagement - it's not personal.</div>
Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com0tag:blogger.com,1999:blog-3599749540293207351.post-89172456215675526172016-03-01T10:19:00.003-08:002016-03-01T10:20:08.885-08:00IBM Interconnect 2016 presentationsIf you didn't go to IBM Interconnect 2016 in Las Vegas (and why didn't you? ;-) or even if you went and want to share the goodness, it appears that you can get access to and download some of the presentations here: <a href="https://www-950.ibm.com/events/global/interconnect/sessions/">https://www-950.ibm.com/events/global/interconnect/sessions/</a><br />
<br />
(You might even find a couple from yours truly . .)Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com0tag:blogger.com,1999:blog-3599749540293207351.post-70034049512831053092016-02-09T00:59:00.000-08:002016-02-09T01:15:20.266-08:00What are you smoking? What is the real meaning of 'Smoke Testing?'As a mathematician (sorry!) I have a keen interest in defining terms before they are used - it's kind of become a habit.<br />
<br />
That's why things like 'I was so shocked I literally died' really grind my gears (see also 'bricked', 'decimated' . .)<br />
<br />
One term I hear multiple meanings of often is 'Smoke Testing' - I was discussing this with Dave Hay (highly recommend his blog at <a href="http://portal2portal.blogspot.co.uk/">http://portal2portal.blogspot.co.uk</a>) and we came up with three that we'd heard on our projects:<br />
<br />
<h4>
'Initial power on/run one transaction' test</h4>
<div>
In electronics, apply power to the system and turn it on - the 'smoke test' here is that if smoke starts appearing, then something is wrong. </div>
<div>
<br /></div>
<div>
In software, if you can't even log on, or the disk starts spinning like crazy, or all the RAM is used quickly it's similar.</div>
<div>
<br /></div>
<div>
<h4>
'Increase load until it breaks to determine the maximum safe load'</h4>
</div>
<div>
This has a car analogy: Yay! Keep increasing the revs/speed until smoke starts coming out of the engine. At that point, back off a little and you have your max safe speed. OK, you should be more scientific but you get the point.</div>
<div>
<br /></div>
<div>
In software, crank up the load-testers until you run out of CPU, RAM, I/O, connections or whatever. Hopefully it won't actually crash, just run low on resources.</div>
<div>
<br /></div>
<div>
It might crash though but not immediately; For example it might queue transactions and eventually the queue will fill.</div>
<div>
<br /></div>
<div>
<h4>
'Test end-to-end' (rarer)</h4>
</div>
<div>
This one I hadn't heard of until the other day. The idea is to blow smoke into the system from one end and see if it comes out where you expect it to i.e. is the flow correct and are there any leaks? Also, is the smoke that comes out the same type as you put in?</div>
<div>
<br /></div>
<div>
In software, this is analagous to watching for side-effects as well as output. Is the Java heap constantly growing? What about the database connection pool? Memory leak?</div>
<div>
<br /></div>
<div>
Anyone got any more?</div>
<div>
<br /></div>
<div>
<span style="background-color: white; color: #000020;">“When </span><i style="color: #000020;">I</i><span style="background-color: white; color: #000020;"> use a word,” Humpty Dumpty said, in rather a scornful tone, “it means just what I choose it to mean—neither more nor less.” “The question is,” said Alice, “whether you </span><i style="color: #000020;">can</i><span style="background-color: white; color: #000020;"> make words mean so many different things.”</span></div>
<div>
<span style="background-color: white; color: #000020;"><br /></span></div>
<div>
<span style="color: #000020;">LEWIS CARROLL</span><span style="background-color: white; color: #000020;"> (Charles L. Dodgson, a mathematician!), </span><i style="color: #000020;">Through the Looking-Glass </i></div>
<div>
<br /></div>
<div>
<br /></div>
Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com0tag:blogger.com,1999:blog-3599749540293207351.post-25772728906834859562016-01-25T10:10:00.002-08:002016-01-25T10:16:26.375-08:00Why I like App Stores . . .and it's nothing to do with walled gardensApp Stores: It's a concept that seems to divide opinion but I quite like them for the following reasons:<br />
<br />
<h3>
One credit-card stored in one place</h3>
<div>
If I have an app store, I have one means of payment. I can register my credit card (whatever type - I don't need to worry if you take Amex/Visa/MCard/Whatever and what country it's registered in, or what currency) in one place and know who the merchant is.</div>
<div>
<br /></div>
<div>
I don't have lots of different web-sites storing my card details. Or if I don't want you to store them (and I don't) then I don't have to type my details over and over again if I want to buy your software.</div>
<div>
<br /></div>
<div>
I can actually recognise the merchant name - I don't have to worry about 'xyz s/w holdings, Bermuda' and whether that's really the software/upgrade I bought or a scammer.</div>
<div>
<br /></div>
<div>
And neither does my card issuer, so my card doesn't get fraud-blocked when I need to spend 0.99 on an in-app purchase and it flags as suspicious.</div>
<div>
<br /></div>
<div>
And there's no 'minimum card value 10.00' restriction: In fact app-stores bundle-up purchases if you buy a lot of things on the same day.</div>
<div>
<br /></div>
<div>
Alternatively, I can buy vouchers for most app stores with cash and not have to worry about credit cards at all.</div>
<div>
<br /></div>
<div>
<h3>
One user ID & password and one source of spam</h3>
</div>
<div>
I want to use your software or app. I'm happy to pay you for it - you put in the hard work so you should get my cash and that's all good.</div>
<div>
<br /></div>
<div>
What I don't want is to have to 'register an account' with you and have to remember yet another password.</div>
<div>
<br /></div>
<div>
I also don't want mail from you or 'selected partners'. </div>
<div>
No, really I don't.</div>
<div>
<br /></div>
<div>
If I've bought games (or anything else) I like then I'll sign up to your mailing list for updates and 'social' stuff, I'll follow you on Twitter or Facebook, but if I've just bought a hex editor or a GPS app then just take the money already.</div>
<div>
<br /></div>
<div>
I don't want 'a relationship'. If there's a new version, flag it in the store and I'll pick it up. The store's notify system will sort it all out for you.</div>
<div>
<br /></div>
<div>
<h3>
One place to get all the updates</h3>
</div>
<div>
This is what prompted this post: One place that says 'nn updates available' so that I can click 'update all' and let it get on with it.</div>
<div>
<br /></div>
<div>
I have phones and laptops I don't turn on all that often. When I do, I just want to click a button marked 'update everything on my computer' and let it get on with it. </div>
<div>
<br /></div>
<div>
Without any more hassle. </div>
<div>
Preferably in the background. </div>
<div>
Without me having to open every single app and click 'check for updates'.</div>
<div>
Without me having to update your 'updater' program before I can check for updates.</div>
<div>
And only having to type in my 'admin' password once, not once per app.</div>
<div>
And really, really preferably, without having to reboot.<br />
<br />
<h3>
On a positive note:</h3>
</div>
<div>
Having run 6 separate updates, at least only one (an update to MacOS itself) has asked me to restart my computer. On Windows that request used to happen every time I updated anything - was it ever really necessary or did people do it 'just in case'?</div>
Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com0tag:blogger.com,1999:blog-3599749540293207351.post-53446151103677953752016-01-19T01:49:00.001-08:002016-01-19T02:11:46.846-08:00Watch out for 'watch' as a variable name in IBM BPM with V8+ coachesFound an obscure issue the other day at a customer site - writing it up here in case I forget what the details were . .<br />
<br />
In summary, if you have a variable called 'watch' in IBM BPM with next gen (V8 and above) coaches, you may see a conflict with dojo stateful <a href="https://dojotoolkit.org/reference-guide/1.10/dojo/Stateful.html">https://dojotoolkit.org/reference-guide/1.10/dojo/Stateful.html</a> trying to add a .watch function to your variable. At this point, your coach buttons will stop working - or your coach may not display at all. You will see an error in the browser console of the form 'dojo.watch is not a function'.<br />
<br />
Using NG coaches with IBM BPM V8.5.0,1 and above, they were seeing issues in the browser console reporting that '.watch is not a function' and finding that they couldn't press the buttons on the coach.<br />
<br />
This appeared to be random with no pattern that they could discern. Some coaches worked, others didn't<br />
<br />
The only workaround they could find was to use a heritage (pre V8) coach, where the problem went away.<br />
<br />
We did much googling of .watch and dojo.watch etc but couldn't find anything that would explain the 'randomness'<br />
<br />
After walking through the process app, we finally spotted that they had a variable called 'watch' in one of the business objects, a couple of levels into the hierarchy.<br />
<br />
This variable was sometimes used, sometimes not. In the hierarchy / object graph, that level was sometimes instantiated, sometimes not. When it was in use, the variable reference was object.watch , which conflicted with dojo stateful trying to add the .watch function onto the variable, hence '.watch is not a function'.<br />
<br />
Process designer will stop you creating variables with java and javascript reserved words (try creating a variable called 'this' if you want to see it) but it doesn't catch everything. If nothing else, the 'watch' variable was created when the customer was on 7.5.1 and before NG coaches with lots of dojo and the .watch function.<br />
<br />
Another one for the 'department of incredibly obscure issues' . ..Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com0tag:blogger.com,1999:blog-3599749540293207351.post-13216879055821196992016-01-12T07:30:00.000-08:002016-01-12T07:30:55.156-08:00Invalid web-site certificates? Check the obvious first: is the time on your VM image correct?So, I'm downloading the MQ Explorer support pack.<br />
<br />
I run a Mac, and this only works on Linux or Windows, so I fire up my Windows 7 VM image to do the necessary.<br />
<br />
Onto the web-site, sign in, choose download method and get a 'This site does not have a valid certificate!' error in Chrome. Worrying! There's no obvious 'override this' in Chrome, so I try Firefox.<br />
<br />
Firefox gives the 'This connection is Untrusted' page with the usual 'get me out of here/I understand the risks' options.<br />
<br />
Now for internal web-servers, I'd normally hit 'I understand' - but this is an external one - and it's ibm.com - it should be OK? But what if I've been Man-In-The-Middled somewhere? OK, it's my DSL-Fibre connection but better safe than sorry . .<br />
<br />
Looking at the screen however, I see this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL5sQXzMxYlWlk2Pe9NaeZ9Fl3lYwBNBAcJP7gu48EmqOfcLYCisT7yQ_Xnz0Wi9X7WsUR07FfqYorsl-Tin5mMKdesVvKEYuEzF5CisCTFLw3OMba5DZnrzrZXQjESl_a9iSozVAjF2E/s1600/Screen+Shot+2016-01-12+at+15.14.38.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img alt="" border="0" height="96" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL5sQXzMxYlWlk2Pe9NaeZ9Fl3lYwBNBAcJP7gu48EmqOfcLYCisT7yQ_Xnz0Wi9X7WsUR07FfqYorsl-Tin5mMKdesVvKEYuEzF5CisCTFLw3OMba5DZnrzrZXQjESl_a9iSozVAjF2E/s400/Screen+Shot+2016-01-12+at+15.14.38.png" title="" width="400" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL5sQXzMxYlWlk2Pe9NaeZ9Fl3lYwBNBAcJP7gu48EmqOfcLYCisT7yQ_Xnz0Wi9X7WsUR07FfqYorsl-Tin5mMKdesVvKEYuEzF5CisCTFLw3OMba5DZnrzrZXQjESl_a9iSozVAjF2E/s1600/Screen+Shot+2016-01-12+at+15.14.38.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; text-align: left;"><br /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjL5sQXzMxYlWlk2Pe9NaeZ9Fl3lYwBNBAcJP7gu48EmqOfcLYCisT7yQ_Xnz0Wi9X7WsUR07FfqYorsl-Tin5mMKdesVvKEYuEzF5CisCTFLw3OMba5DZnrzrZXQjESl_a9iSozVAjF2E/s1600/Screen+Shot+2016-01-12+at+15.14.38.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"></a></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
The certificate is valid from 15/12/2015 (That's 15th December, if you're used to US date formats!)</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
"The current time is 08/12/2015 13:44" - er, not it's not! Today is the 16th January 2016 (16/01/2016). What's going on?</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
So I check the time on Windows in the VMWare - sure enough, it thinks it's still December. The Time Server sync hasn't fired yet or has glitched and I haven't used this VMWare for ages: Obviously since 8th December.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
So, I resync the time and everything starts working! Yay!</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
But I never usually check the time on VMs - why would I? I assumed that the time-server sync is keeping me up to date. It usually syncs up OK, but obviously not often enough - or it can have an error with time.windows.com.</div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
So TL;DR: When firing up a VM, check and sync the VM time to the time server, every time. Then check it against your watch - just to be sure!</div>
Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com0tag:blogger.com,1999:blog-3599749540293207351.post-86426402712505294492015-12-16T01:33:00.004-08:002015-12-16T01:58:03.288-08:00The Magical Progress Fairy - are you using one on your project?Some time ago IBM had an advert featuring a 'Universal Business Adapter' (YouTube <a href="https://www.youtube.com/watch?v=AIOqOxI0K_I">here</a>) which would magically connect anything to anything.<br />
<br />
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 <a href="http://www.ibm.com/middleware/integration/en-us/enterprise-service-bus-esb.html">here</a>).<br />
<br />
Another thing that everybody seems to want on their project is the <i>Magical Progress Fairy. </i>A lot of people think they already have one . . .<br />
<i><br /></i>
<br />
<h3>
What is a Magical Progress Fairy?</h3>
A Magical Progress Fairy (MPF or latin: <i>hopeus overexperiencus</i>) 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!<br />
<br />
<h3>
I don't do that . .</h3>
<div>
Perhaps you don't - but do any of these things sound familiar?</div>
<div>
<br /></div>
<div>
<h4>
"We only made 20 story points in our last sprint - to get back on track we need to make 30 in the next sprint"</h4>
<div>
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'.<br />
<br /></div>
<div>
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.</div>
<div>
<br /></div>
<h4>
"We had a bad sprint last time - a lot of things came up to disrupt us"</h4>
</div>
<div>
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?</div>
<div>
<br /></div>
<h4>
"We weren't experienced enough on the technology before - we're better now"</h4>
<div>
Maybe - but can you prove it? Are you sure you now know everything you need to know? What else is around the corner?</div>
<div>
<br /></div>
<div>
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 . . .</div>
<div>
<br /></div>
<h3>
OK, maybe I might need a Magical Progress Fairy - but what else can I do?</h3>
<div>
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:</div>
<div>
<br /></div>
<h4>
Accept reality and calculate your project velocity</h4>
<div>
<a href="https://en.wikipedia.org/wiki/Velocity_(software_development)">Project velocity</a> 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.</div>
<div>
<br /></div>
<div>
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.</div>
<div>
<br /></div>
<div>
Example:</div>
<div>
<br /></div>
<div>
We plan a sprint of 2 weeks (10 days). When we did <a href="https://en.wikipedia.org/wiki/Planning_poker">planning poker</a> 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.</div>
<div>
<br /></div>
<div>
At the end of the sprint we found that we 'only' achieved 32 story points.</div>
<div>
<br /></div>
<div>
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'</div>
<div>
<br /></div>
<div>
Of course, you can have a velocity greater than 1.0. </div>
<div>
<br /></div>
<div>
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 . .)</div>
<div>
<br /></div>
<h4>
Once you know your velocity, use it to plan further sprints realistically</h4>
<div>
So, if your velocity was 0.64 and you have another 10 day sprint - then plan for 50*.64=32 story points</div>
<div>
<br /></div>
<div>
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).</div>
<div>
<br /></div>
<h4>
Don't invoke the Magical Progress Fairy</h4>
<div>
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?</div>
<div>
<br /></div>
<h4>
Don't extend the sprint</h4>
<div>
'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'</div>
<div>
<br /></div>
<div>
<h4>
Finish early? Shut down the sprint, calculate velocity and start the next one</h4>
</div>
<div>
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.</div>
<div>
<br /></div>
<h4>
My velocity has changed after the next sprint - what do I do?</h4>
<div>
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.</div>
<div>
<br /></div>
<div>
So, use your new velocity to plan the next sprint- that's now our up to date measure of reality.</div>
<div>
<br /></div>
<div>
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.</div>
<div>
<br /></div>
<h3>
A quick quiz - which of the following might actually work? </h3>
<div>
No prizes except maybe getting your project back on track . .</div>
<div>
<ul>
<li>Work evenings and weekends</li>
<li>Increase the project duration by adding more sprints</li>
<li>Adding more people to your project - see <a href="https://en.wikipedia.org/wiki/The_Mythical_Man-Month">The Mythical Man Month</a></li>
<li>Cut the scope by removing user stories</li>
<li>Yelling at the team more - motivation is the key</li>
<li>Re-prioritising user stories and revisiting what might be acceptable as a minimum viable product</li>
<li>Re-plan the sprint every day: hey, why not replan every hour?</li>
<li>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'</li>
<li>Add more RAM, CPU or disk to the development system - maybe - but is this the real issue?</li>
<li>Cut/eliminate testing (especially NFRs) - let the users do it in the beta</li>
<li>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.</li>
<li>Re-estimate everything over and over until we find an estimate we like that fits the plan.</li>
<li>Ignore technical debt - we've gotta hit that deadline - hardcode everything!</li>
<li>Calculate your velocity, use it to plan further sprints, bite the bullet and accept reality.</li>
</ul>
<br />
<ul>
</ul>
<div>
<h3>
Finally, Beware the 'hidden hours' of evenings and weekends working - especially when you don't know about it!</h3>
<div>
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!</div>
<div>
<br /></div>
<div>
It means that in the next sprint, you're now assuming that 4 people will work the weekend - and the same going forward.</div>
<div>
<br /></div>
<div>
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.</div>
<div>
<br /></div>
<div>
<i>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 . .</i></div>
</div>
</div>
Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com0tag:blogger.com,1999:blog-3599749540293207351.post-43579431226607180772015-12-10T03:02:00.000-08:002016-05-28T07:13:52.891-07:00El 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.<br />
<br />
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.<br />
<br />
The symptoms were visible in the 'progress' of Time Machine in the status bar:<br />
<br />
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij8npe3soGL6P_81BMYP883eD6Ff8sdyahIzmwVe4HV6qrMiImR9bDUPoMOwF1C2H3seyveSzHVQPPUbclZknNxDgHeVHY-KnGzqBO1Yo-OFGpazKFbxgw0hs2SpD2gaXGnakhCvNroTo/s1600/Screen+Shot+2015-12-10+at+10.42.06.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEij8npe3soGL6P_81BMYP883eD6Ff8sdyahIzmwVe4HV6qrMiImR9bDUPoMOwF1C2H3seyveSzHVQPPUbclZknNxDgHeVHY-KnGzqBO1Yo-OFGpazKFbxgw0hs2SpD2gaXGnakhCvNroTo/s1600/Screen+Shot+2015-12-10+at+10.42.06.png" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
The 'backing up' would stay in single megabytes.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
After checking the network etc, I then tried Time Machine preferences:</div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwMvG_rADo_ADs5dMMqbJYeenxq7W5SPnL5l4pIQGFN4rid6Je4Km-6es84-V26uBZy6seBBPHWWkcd1xl5jTj82MIzY7gFHjDHbiHmjattCofHCk1DFgFL-tLLeRxEYskiGMXtCwxwAw/s1600/Screen+Shot+2015-12-10+at+10.45.07.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="165" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwMvG_rADo_ADs5dMMqbJYeenxq7W5SPnL5l4pIQGFN4rid6Je4Km-6es84-V26uBZy6seBBPHWWkcd1xl5jTj82MIzY7gFHjDHbiHmjattCofHCk1DFgFL-tLLeRxEYskiGMXtCwxwAw/s320/Screen+Shot+2015-12-10+at+10.45.07.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
Originally I had my NAS time machine connected as the 'auto discovered name' i.e 'AndyNAS'.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
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.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
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.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="font-family: "courier new" , "courier" , monospace;">Finder->Go->Connect To Server</span></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc6rHrOixKCJ2K6fYwCXgcyMVG_LRJFqPXV_JhIfvhnKZ7HDTm4fQ0fVmiCxRnYlTrLZ1OZRDNPAk7kV3Ex3YjHgN_udzdQ7vlkLoijbZo_lqhDrXCkh7Kv9GZHVe3TpEXbFdR6vuV3u0/s1600/Screen+Shot+2015-12-10+at+10.51.19.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="152" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhc6rHrOixKCJ2K6fYwCXgcyMVG_LRJFqPXV_JhIfvhnKZ7HDTm4fQ0fVmiCxRnYlTrLZ1OZRDNPAk7kV3Ex3YjHgN_udzdQ7vlkLoijbZo_lqhDrXCkh7Kv9GZHVe3TpEXbFdR6vuV3u0/s320/Screen+Shot+2015-12-10+at+10.51.19.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
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!</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Not sure exactly what fixed it - could be any of the following:</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<ul>
<li>Adding and Removing the Backup Disk / NAS connection in Time Machine Preferences</li>
<li>Doing a direct afp connect to the NAS Time Machine share in Finder</li>
<li>Using the 'dotted quad' / Numeric IP address rather than the name</li>
<li>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</li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: left;">
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.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
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.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
As usual, this worked for me - your mileage may vary but it might be worth a try.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
***Additional***</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
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.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
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!</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Believe it or not, the fix for this is to start your Mac in 'safe mode' - then restart again normally.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
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.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
(Apple guidance here https://support.apple.com/en-gb/HT201262)</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
After you've started up in safe mode, give it a minute or two to finish loading everything then shut down again.</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Now check your time-machine backup speed - assuming you have a decent network speed (I highly recommend gigabit) you'll see it fly along . . .</div>
Andy Garratthttp://www.blogger.com/profile/09974678684922325009noreply@blogger.com0