Saturday, 10 October 2015

Product Review - Wrappz Laptop Decals and Custom Phone Skins

Like many developers, I get my money's worth out of the laptops I buy. Sometimes it seems I use them every minute of the day. And, over the years, I've accumulated quite a collection of physical machines in addition to the various VMs I have carrying out miscellaneous tasks around the house.

I secretly love the obviously-marketed-at-women ones that have cases made of pink brushed aluminium and the like. But, also being a professional developer, I have to say that almost always that fancy case comes accompanied by last year's technology (or older.) It simply isn't a good business decision to buy them when you review the spec.

As a wise philosopher once said, I'm a Barbie Girl in a Barbie World.

So, I often end up buying machines that have phenomenally-fast dual/quad processors with acres of RAM capable of running lots of memory-intensive applications concurrently. And I switch out the standard platter drive for a 1 TB SSD. (I usually also swap out the optical drive for a second 1TB SSD. And 2TB SSDs that I've not yet had a chance to get my hands on have also now become available, so my next dev machine will have 4TB total, but that's really a different review.)

Anyway, for some reason the most performant laptops always seem to come in boring black boxes. When you acquire a few of these over the years, it becomes difficult to tell them apart. So for a few years now I've been putting decals on the back and naming the machine according to which decal adorns it. I also make the login screen and desktop background of these machines match the decal. This all helps keep you oriented when you're navigating around, RDP-ing from one machine to another.

TaylorHe Decals

Up to now, my go-to decal manufacturer has been TaylorHe. They do some very nice pre-made patterns that suit almost every taste. With my new work laptop, however, I fancied doing something a bit more bespoke. I'm a huge Breaking Bad fan, so I wanted a machine that had a theme related to that. 

Since the device that I usually take pictures with is in this photo, my friend Ian O'Friel
kindly helped me take this. Which made it a much better photo than it would otherwise have
been as he has a real eye for photography. (You can see more of Ian's fab photos here. I
particularly like the one of the old rusty gate and the South Side At Night.)
Looking around, I found a company called Wrappz that provides exactly this type of product. Not only do they produce decals with custom designs, but they also print them on a custom-sized sheet. So you don't have to trim them to fit your machine. This may seem like a small advantage, but it was nice just to be able to use them out of the box like that rather than messing around with a scalpel or scissors.

Like TaylorHe, Wrappz also do custom phone cases. So I got one of those to match the decal. (Not that I actually own a phone, incidentally - I'm one of the few people I know that doesn't use one, and doesn't miss it. I have a Samsung Galaxy S2 'phone', but it acts as a personal organiser rather than as a communication device. I only put a temporary SIM in it when I have a reason to, which is almost never.)

If you want to order some of these decals / phone cases for yourself, here are some discount codes you can use to get them more cheaply. NB: I've got no commercial relationship with Wrappz, and I haven't benefitted in any way from this review. Also, I won't know whether anyone has used these codes:
Wrappz discount codes

More Wrappz discount codes

Last small tip for those who, like me, have multiple laptops in their network to access. You can place the name of each machine in the Task Bar by creating a new Toolbar, and calling it "\\%computername%", as described here. It makes it amazingly easy to see which machine you're on, even if you have a full-screen program running, and even if you're accessing it from another physical device.

Computer Name on Task Bar

Saturday, 5 September 2015

Peninsula Business Services - Glasgow Office, Glassdoor review

I recently worked for a short while at Peninsula Business Services' new Glasgow office. I attempted to submit a review on my experience at  However, it was deleted several times without explanation. This behaviour does make me wonder how credible Glassdoor reviews actually are. It seems I'm not alone in having doubts about Glassdoor's credibilty. Several other review contributors have reported having negative reviews removed without explanation upon companies paying fees to sanitise their ratings. And several companies' HR departments have reported being approached by Glassdoor salespeople with offers to clean up their reputation for a fee.

Whilst my review was overall negative, it was also balanced, accurate, and written in professional language. It didn't identify anyone by name, and the original version referred to only one person by job title (the Head of IT). All of this falls within Glassdoor's purported guidelines.

I've submitted yet another review today. In the absence of any information about what may have been "wrong" with previous reviews, I've removed a lot of detail. If it doesn't get published, I will publish it here instead.



Shiny new office, replete with brand new desks. PCs still with the plastic on, and Niels Diffrient chairs (not a spelling mistake, btw - that's the chair designer's actual name.)

Most people are fairly pleasant.

Salary reasonable for a developer working in Glasgow (£45k).

They make a very healthy profit.


Peninsula drags employees from Scotland half way across the country on a 7-hour round trip to Manchester on their first day. Just to attend an “induction” course. As well as being a waste of time, this course was frankly a little patronising. Topics covered included how to sit in a chair, and how to find the first aid kit. The most galling thing about this was that when I did get a minor cut threading PC cables through a sharp corner of my new desk back in Glasgow, I discovered there was no first aid kit. Management rationalised that the reason for this was to avoid them getting sued by having out of date supplies in it. Instead of just admitting they’d made a mistake in failing to buy one. This is a company that claims to specialise in giving Health & Safety / Legal advice to other companies. Perhaps they ought to get their own house in order first?

I was lied to during recruitment and contractual negotiations. I spotted that the users were located in Manchester whilst the development team is based in Glasgow, and asked the Head of IT how he proposed to address this limitation? I was told we'd be using “teleconferencing” and that intermediaries like Business Analysts and a Product Owner would be available to communicate requirements between the development team based in Glasgow and users based in Manchester. The truth was that there were no Business Analysts or Product Owner fulfilling this role on this project. Consequently, developers were expected to travel to Manchester in their own free time very frequently. And often for reasons that didn't make a lot of sense. Such as attending that induction course to learn how to sit in a chair and about first aid kits that don’t exist. Or for purely political reasons such as “to get your face seen.” Not to mention that there was no “team”. I was the sole and only developer in Glasgow.

The fact that regular travel to Manchester was expected should have been stated on the actual job spec. And when I was switched on enough to ask about the geographic concerns of having users in one place but developers in another, the recruitment team and management should have been honest about the frequent need for travel at that juncture. Instead, a clause about "occasional travel" was squeezed into the small print of the written contract. When I asked about this and stated clearly that I wasn't looking for a role that involved travel, I was given reassurance that I'd only need to spend one day in Manchester for that induction course (my original joining instructions had referred to an "induction week".) However, after attending that one day, literally my first day in the Glasgow office I was asked to travel to Manchester again. That was twice in my first two days. My manager, who started the week before me, had travelled 8 times by that point, and has done so again 2 further times in the two weeks I worked there. I do not consider this "occasional".

Developers in Manchester do not have phones on their desk. Apparently as a matter of policy. This perplexed them as much as it did me. It made communicating knowledge about existing projects far more difficult than should have been the case. When you have development teams spread out across the country, put phones on the desks of the people who need to collaborate. This is a no brainer. It shouldn’t need to be explained or debated. But apparently some elements of management have strange ideas about putting their direct reports in silos and only allowing indirect communication. This is the exact opposite of how Agile is meant to work. A project like the one I was assigned to should take 3-4 months max to complete. Owing to issues like this, it will take Peninsula far longer, if it gets completed at all.

You need to raise every issue, however minor, via a helpdesk ticket. Even if it is only a simple request for collaboration with someone in the same team. Often I found this red tape was just an excuse to rationalise and ignore the issues reported or information requested. I found tickets about damaged equipment were closed for spurious reasons, or simply deleted without explanation. I guess someone’s stats and performance evaluation depended upon how many tickets they closed/suppressed rather than on how many actual problems got fixed. I’m a developer. I shouldn’t have to raise a helpdesk ticket to find out a simple technical detail or obtain a database backup. These things should be sorted out with one phone call in an environment that claims to be Agile. And if new equipment arrives damaged, it should be returned to the manufacturer for a free replacement or repair. Not just accepted as is, and the ticket deleted. That wastes company money, and it reduces the equipment available to front line staff.

Peninsula claims to aim to be an “employer of choice”. However, they seemed to fail to realise that this necessarily means they will be dealing with employees that *do* have choices. It's therefore inadvisable to paint one picture of the role during recruitment, then expect us to put up with a radically different reality on the actual job. Companies who behave that way tend to lose new employees very quickly. There are literally thousands of other companies in Glasgow and the Central Belt competing for the same hard-to-find IT skills as Peninsula is seeking. And most of them have more reasonable demands than Peninsula. (Most particularly, they don’t expect you to endure that horrendous 7 hour round trip commute to Manchester in your own free time on a regular basis. Especially for the spurious or political reasons mentioned.) I turned down two other jobs to take this one, by choice. When it became clear the role had been mis-sold, I had another job offer within 48 hours, starting the day after I finish at Peninsula. I know many of the other good .Net developers in the Glasgow area, and most of them already have jobs. I know how difficult it is to recruit them from having been on the other side of the hiring table in other roles. It’s easy to get your employer brand damaged by having unreasonable expectations, making nonsensical management decisions, and misrepresenting the role. Word gets around very quickly indeed. And even if you do manage to fool someone with less options into coming on board, and begrudgingly sticking around for a few months, tolerating that horrendous commute to Manchester. You’ll only have someone that will become de-motivated owing to the nonsensical management policies I mentioned like that issue with the phones, or burned out very quickly owing to the poor work/life balance that unreasonable commute entails.

The Glasgow office is at present a building site next to another building site (see the pictures of construction workers in the building I posted, and the construction site next door.) And there is no air conditioning, despite us having had to sit and listen to a talk on how to use air conditioning during that awful induction course. This means the windows are open on the side with the external construction site all day. The IT department is in an open-plan office, sandwiched between salespeople making cold calls all day and advisors also taking phone calls. All this therefore makes for a very noisy and distracting environment. It is not at all conducive to a concentration-intensive task like software development.

Much of the recruitment literature describes the ‘Glasgow’ office, which is located in the Finnieston area, as being “in Central Glasgow” and “within walking distance of the city centre”. This is utter nonsense. Peninsula are deluding themselves if they believe this to be true. Or worse still, are foolish enough to try to delude local people who know the area well. Finnieston is close to Glasgow city centre only on Google Maps. It is two train stops away from Glasgow Central station. It is about as close to Glasgow city centre as Salford is to Manchester city centre. And with many of the same attendant social problems. e.g., the one time I had my car broken into in Glasgow, it was in the PC World car park across the road from Peninsula’s Glasgow office. Nobody ever walks from Glasgow city centre to the Finnieston office. Because to do so you’d need to spend 20-25 minutes walking through several known drug areas and the red light district. It is to be avoided, especially at night. One of my previous roles was in the Glasgow police, so I know which areas of the city are high in crime and which aren’t. Don’t be lulled into a false sense of safety by the fact that there’s a Police Station a couple of doors down. The reason it’s there is because the area has a high crime problem. And the reason there’s plenty of short-stay parking meter spaces in front of the office side streets is that locals know better than to leave their car on the street in that part of town. Ironically, there is plenty of secure parking available in the Skypark complex that the Peninsula office is part of. But since employees aren’t allowed to use any of it that’s a moot point.

Several previous attempts at submitting this review have been deleted by Glassdoor with no explanation given. This makes me wonder about how many other negative reviews have been suppressed. I’m submitting this last attempt, which I have kept as close to Glassdoor’s guidelines as I can. If it gets through, it gets through. If it doesn’t, I’ll post it on LinkedIn and my blog instead. Suppressing negative opinion is extremely foolish, and leads only to The Streisand Effect.

I have a feeling that, if this review even gets published, someone from Peninsula’s Directors' Office will be along to trot out the party line that Peninsula isn't for everyone, and only superstars make it there, etc, etc. I noticed that canned response on some of the other negative reviews herein whilst I was being recruited. That was one of the first things that led me to have some initial doubts. Not just that issues were being raised by front line staff, but that they were treated dismissively. Other factors included my contacting former developer employees of Peninsula via LinkedIn, and asking them confidentially why they left. There aren’t many developers with more than 18 months tenure at Peninsula. I think I now know why.

Advice to Management

Be more honest with yourself and with recruits during interviews and pre-employment negotiations. There's no point in saying you'll be using teleconferencing, if you what you really mean is "We'll be dragging you to Manchester at least a couple of times a month, probably much more frequently. Often for political reasons or just to attend a pointless box-ticking induction course that bears no relation to reality rather than because of any real, pressing business need." A good place to do this would on the initial job description itself, and not in the small print of the contract you only see once made an offer.

Don't just sweep issues that staff raise under the carpet. You can only improve if you acknowledge what's gone wrong and learn from mistakes. Whether it's a missing First Aid box, a helpdesk request, or something more business-critical, it's all the same ethos. You either learn and improve, or you don't and stagnate.

Particularly with regard to hiring software developers, realise that good developers always have other options. It's simply unrealistic to expect us to commute to Manchester when we can easily work in almost any other company that uses IT and doesn't have that nightmare commute. If you need developers in Glasgow, hire them in Glasgow. If you need them in Manchester, hire them in Manchester. But don't hire them in one place and expect them to constantly commute to the other. As Warren Buffett says, you can put on a ballet or you can put on a heavy metal concert. But don't advertise a heavy metal concert then put on a ballet, or vice versa. It's moving the goalposts that's the problem, not having goalposts.

Peninsula's Glasgow office is still basically a
building site. Most of the floors are still being
fitted out for use as office space at some point
in the future. This photo shows two construction
workers in the main lobby.
Desks are new, and have expensive Niels Diffrient
chairs. About 50% of the desks are empty at present.

Small chairs around a small table. An
informal meeting space near the open-plan kitchen
As mentioned, there is still a lot of construction work
going on in the building. This protective covering on the floors
in the main lobby is to protect the floor tiles from damage
by heavy masonry trolleys. One of these trolleys broke the lift during
my first week. It was one of many things I found broken that week.

View from the office. There are windows on one
side only - the side facing SECC and The Hydro. The shine
from The Hydro roof can be very distracting, and lasts all
day since the roof is curved. The blinds can be closed to make
it bearable.

The garage next door is being built at present. As there
is no air conditioning in the Glasgow office, the office windows
overlooking this site need to stay open all day for ventilation.
Combined with the cold-calling sales team and
customer advisors taking incoming calls either side of
the IT 'department', this made for a very distracting and noisy
environment that was not conducive to quality software development.
When I was there, the IT department consisted of me and
one manager. It is now only one 'manager'.

Close up of a typical desk. You have three monitors (two external
and the laptop main screen), and a laptop that should be capable of
utilising all three at once. Unfortunately, owing to a faulty graphics card, the
laptop I was issued could only support the main laptop screen
and one external monitor. (An identical model used
by my manager successfully had all three working concurrently.)
My 'help' desk ticket about this was 'resolved' by stating that I
should just use the one external monitor that did work. When I re-opened
the ticket, and suggested that sending the brand new faulty graphics
card back for a free RMA repair would be a more appropriate solution,
my ticket was deleted without further explanation or attempt at
resolution. The next developer in will therefore experience the same problem.
I wondered if one of the monitors had arrived smashed whether "use the two that
aren't smashed" would have been considered an appropriate
resolution to that problem? Why was it any different when the problem was
a faulty internal component that should have been easily replaceable?


Obligatory disclaimer: The views expressed are my own and don't reflect the views of my employer.



Update 17 September 2015:

You couldn't make this up. Peninsula has now responded to my review thus:

"Dear Sirs,

Having considered the content of this post, we would be grateful if someone could please review it with a view to it being removed. Our reason for flagging this post to you is that the review contains a number of inaccurate comments which we categorically dispute, including that the former employee was “lied to during recruitment and contractual negotiations” and that “a clause about “occasional travel” was squeezed into the small print of the written contract”.

For clarity, we do not have “small print” within our contracts all text is in the same size and typeface. Moreover, we did not lie about the fact occasional travel would be required either during recruitment or within contractual negotiations. As the poster accepts, her initial joining instructions referred to an “induction week” that was due to take place at our Head Office in Manchester. As it was, this particular employee was only requested to attend a one day induction in Manchester but then refused to travel to Manchester again when requested to do so within her first week of employment. She provided no explanation for her refusal and if a reason had been forthcoming, this would have potentially allowed us to resolve any issues that she had and/or reached an amicable, alternative way forward.

In addition, there was no expectation that she would be required to travel within her own “free time” as she asserts as she was permitted to travel and return home within her normal working hours. She was employed for one week only we find it astounding that she is able to cast false aspersions about us an employer which potentially affect our reputation to anyone reading the review.

Our Glasgow office is in its infancy and this particular review gives a very misleading impression of our offices and the premises. We absolutely welcome constructive feedback from our employees and we fully accept that there might be some teething problems associated with new office premises but the location and its surroundings are all issues which are abundantly clear to a candidate when he/she attends an interview.

Given the above, we would be grateful if you could please review the post as it seems to us to be a malicious attempt to damage our reputation. As an employer, we recognise the benefit which Glassdoor provides us and our potential employees with in respect of feedback (positive and negative) which we constantly keep under review in order to make improvements where necessary. That having been said, we cannot accept the type of inaccurate information presented in this post by an employee who worked for us for less than a week.

If you require any further information or evidence to counter the comments made within the post, we would be more than happy to provide this"

Apparently, despite my alluding to it
previously, Peninsula still hasn't heard
of the Streisand Effect

So, apparently photographs of the actual office and its surroundings give a "misleading impression" of what it's really like. And despite the fact my review has already attracted 3 "helpful" votes from other Glassdoor users (who are presumably Peninsula employees themselves) in the short time since it was published, apparently its facts are in dispute. One of those "disputed" facts is that I was apparently allowed to make that awful commute to Manchester during "normal working hours". Well, just for clarity, I stayed over on the Sunday evening prior to my start date for that induction course. And I wasn't able to travel back until after work on the Monday evening (I got home at 9pm and was at work by 8:10am the next day.) I still have the cattle class train tickets if anyone from Glassdoor would like to see them. I would further note that if as claimed I were to travel to Manchester during "normal working hours", that would mean I'd have spent 7 hours travelling and only 1 hour on-site, since they work a standard 8 hour day there. In actuality, I was on site all working day on that Monday because I was required to travel in my own time, exactly as I claimed. 

As for my not giving a reason for my decision not to make that 7 hour trip in my own free time for the second time in two days - Peninsula weren't entitled to any further explanation or debate beyond it not being something I'm prepared to do. I stated this clearly during contractual negotiations; I still have the emails I sent to the recruitment team to prove this. It would seem Peninsula simply proceeded in the hope that once I'd come on board I'd have no option but to put up with unreasonable travel in my own time, regardless of the limitations on my willingness to travel that I'd made clear in writing during negotiations.

Furthermore, when it became abundantly obvious on that first day back in the Glasgow office (my 2nd day in the job) that Peninsula had radically different ideas about the role's need for regular travel to Manchester, my exact words to my manager were, "If we're going to fail, it's best to fail fast. If you do need someone that's prepared to travel to Manchester on a regular basis, I can't accommodate that, and I doubt you'll find anyone with the right skills that will. I feel I was crystal clear about that before accepting the job. But, if that's what you really want, let's just be adults and call this quits right now. So I can go and see if there's still any interest from the roles I had to turn down to take this job, and you can go and recruit the type of resource you apparently really need." My manager at Peninsula's response to this offer was, "No, we've done the hard part of getting you on board now, and we don't want to lose you. There's no need to leave." Despite this, a week later he came back and stated that Peninsula was terminating my contract for exactly the reason discussed - i.e., that they really wanted someone prepared to travel from Glasgow to Manchester on a frequent basis. My manager claimed that he disagreed with this decision, but that he had been over-ruled on the matter. I felt this indecisiveness bordering on duplicity merely wasted more of both of our time and represented further bad faith on Peninsula's part. Fortunately, when I did belatedly go back to the roles I'd had to turn down, there was still interest, and I was made another job offer within 48 hours. Otherwise I'd have considered suing Peninsula for negligent misrepresentation of their position that had cost me another opportunity. As it is, I consider that I've ended up in a very much better role, that pays a little more, gives me an extra hour in bed, where I can park my car safely outside my place of work, and most of all affords me the opportunity to work with some great new colleagues that, unlike Peninsula, do not resemble the cast of The Office.

Anyway, whether or not Glassdoor does decide to remove my entirely factual review, it will remain published here and on LinkedIn. Watch this space to see just how much Glassdoor's claims are worth that employers can't get reviews they disagree with suppressed. If you're a Peninsula employee yourself, and you agree with the valid concerns I raised, I'd ask you to take a few moments to mark my review as Helpful. Perhaps if enough people do this management will stop hiding their head in the sand long enough to wake up and improve matters at the Glasgow office for those unfortunate enough still to work there.

I would note that, as of this time, Peninsula have been so disorganised that I haven't even been paid for August, let alone the part of September that I worked. (I worked from 24th Aug to 9th September inclusive, and not "a week" as claimed in Peninsula's response.) Nor have I received written confirmation of their decision to terminate my contract. Suffice to say, Peninsula's management couldn't run a bath between them. Any developer worth their salt would need to be mad or desperate to take a job with them in their Glasgow office. They are an utterly clueless employer, with only a death march project and inept, Jekyll & Hyde management to offer the next unlucky incumbent.


Update 08 Sep: OK, I've given it a week now and my review on Glassdoor has been deleted several times. Positive reviews have meanwhile been published.  I can't help concluding that Glassdoor's review system is a sham that serves neither employees' nor employers' interests, but only the interests of Glassdoor. The fact that employers can pay to suppress negative reviews (even though Glassdoor denies this is the case), makes it no more than a blackmail scheme. Anyway, here is how my review should have looked. Decide for yourself whether there were any legitimate reasons to suppress it.

Update 09 Sep: I see the photos I submitted (posted at the bottom of the review above), which show the real working conditions at the Glasgow office and that were approved for a couple of days have been deleted now as well. Glassdoor really is a disgrace, and an insult to candidates' and employees' intelligence.

Update 10 Sep: Mysteriously, my review and photos have been placed back on Glassdoor. Guess they finally worked out that you can't suppress the whole internet. A Google Search for "Glassdoor Peninsula Business Services Glasgow" shows this blog fairly near the top, alongside the Glassdoor site. Rather than it being embedded amongst other reviews. My review will remain published here (formatted into paragraphs - the Glassdoor version is a Wall Of Text) in case they change their minds once again.

Update 23 Sep: Quelle suprise, my review on Glassdoor has been removed without consultation. Clearly all an employer has to do to whitewash their reputation on that site is ask and possibly pay for the privilege. Peninsula actually has a member of staff, Dan Grayson, dedicated to this sort of whitewashing. To quote from his own LinkedIn description his job is "researching, highlighting, promoting and sustaining Peninsula's brand and reputation online through challenging negative comments or ratings". For most companies, this isn't a problem that is even on their radar. Others, like Peninsula, are clearly so bad that it is someone's full-time job. Remember that when reviewing all those supposedly-positive reviews that remain posted on Glassdoor. Meanwhile, this blog and LinkedIn will continue to show the actual opinion of an actual Peninsula employee far more prominently in Google search results than would have been the case had my review just remained one of many on Glassdoor. Google Analytics suggests that people considering working for Peninsula are finding this information, and not just taking Glassdoor's sham reviews at face value.

Update 24 Sep: I'm approaching the end of my second week in the role I took up after departing Peninsula. It could just be that Peninsula was so bad by contrast, but I can honestly say that my new role is the best place I've ever worked. My new colleagues are fun. The management is competent but friendly. The work is challenging but doable, and the equipment we're using is top of the line. I've worked with some really great teams and some fantastic managers and developers in my 25 years in the software development industry. But this new company is the best of them all. I tried to do the right thing by Peninsula by sticking by my decision to accept their offer, even when the opportunity I'm now enjoying came calling only a few days afterwards and it was my preferred option. I'm very glad that Peninsula decided to end our relationship, freeing me to take up what has turned out to be the best role I've ever had. The Universe has a way of looking after you sometimes, I guess. :)

Sunday, 14 December 2014

Product Review - LED Lenser LED7299R H14R.2 Rechargeable Head Torch

I bought one of these for running during the Winter months, when you inevitably find yourself having to make some runs in the dark or twilight.

There are plenty of options out there - ranging from an offering at £5 from Tesco, right the way through to Hollis Canister diving head torches at £800. Obviously, there’s a trade off between getting what you pay for, choosing a light that’s suitable to your purpose, and not spending more than you need to.

After checking out other reviews for several different options, I opted for the LED Lenser LED7299R H14R.2 Rechargeable Head Torch. You can spend anything from £90 to £130 depending on where and when you choose to buy this model. There’s also a similar-but-cheaper model in the same range that isn’t rechargeable. (No reason that you couldn’t buy separate rechargeable batteries of course.) However, I liked the convenience of having the recharging unit built in. It can alternatively take four conventional AA batteries, which you can use as a backup.

For running, it was important that the torch had enough light output to be able to see in pitch darkness on unlit trails with occasional tree cover that blocks ambient light. It was also important that it was comfortable to run with. A lot of runners recommended the Petzl range of head torches. I can see why. They’re a lot lighter than the one I chose (whilst at the same  time being a lot dimmer - typically about a third to a quarter of the light output.) My main criticism of the LED Lenser H14 R2 is that it can feel a bit hard and uncomfortable on your head, particularly the front torch holder. A softer, more padded material behind the lamp would have made it much more useable. As is, it’s more comfortable with a beanie hat underneath, but I wouldn’t fancy trying to run with it overnight in the Summer when a hat would make you overheat.

In terms of light output, it was difficult to find reliable information. The minimum light output was fairly consistently reported by various sources to be 60 Lumens. The product box and the site where I bought it both say the maximum output is 850 Lumens. Other sources quoted as low as 260 to 350 Lumens.There appears therefore to be some confusion about what is meant by "maximum". Namely, the torch has a 'boost' setting that increases brightness for 10 seconds at a time. However, there is a second definition which is the maximum brightness that the torch is able to consistently maintain. I suspect this distinction accounts for many of the differences reported by different sources.

60 Lumens is about as good as the majority of the Petzl range. The brightest setting for the H14 R2, whatever the real value in Lumens,  is a very bright light that is uncomfortable to look at directly at the highest setting. The very highest setting (known as the "boost" setting) only stays on for 10 seconds at a time. Most of the rest of the time, I used it at the highest 'stable' setting.

On that highest constant-current setting, the light can be diffused over an area about 5m wide and 10m far directly in front of you. You can also elect to have a narrower but more intense beam. The specs say it will project light up to about 260m. I found that not to be the case, though I did stick to the “wide and bright” setting throughout my run. Perhaps the boost setting when combined with the narrowest beam would momentarily illuminate the farther "260m" distance quoted for 10 seconds at a time; I didn't test that, because such brief and narrow momentary brightness isn't relevant for my use case or many others I can imagine. I did test the range on the max consistent setting combined with a wide beam when I returned to my car. I found that whilst that setting is quite good enough for running/walking in the pitch dark by allowing you to see what's immediately in front of you, the light didn’t even make it across to the trees at the far end of the 100m or so car park I was in. I’ll try it again on the “narrow beam, temporary boost” setting during my next night run. However, whilst I suspect that the specs are technically correct and that objects will be able to be illuminated at that distance, albeit briefly, it is only with a beam that’s about 1m wide. It's for the reader to decide whether that performance meets their actual needs.

I found the light was good enough for my use case. I ran during astronomical twilight (the third darkest phase of the night; pretty much pitch black for the purposes of this test.) Without the torch, I would just about have been able to see my hand in front of my face in open ground, but not the path I was running on. On stretches covered by trees, it'd have been completely dark. As it was, I missed a pothole in the same forested location (once on the way out, and once on the way back.) I couldn’t see how I’d done this at the time, as I felt I’d been seeing the path well enough to run at a normal pace. I stumbled at the exact same spot again, however the very next day during daylight. So, it just appeared to be a particularly well-camouflaged pothole, rather than a failing of the torch. 

The final lighting feature of note in this torch is the rear red light that you can turn on to allow traffic and cyclists to see you more easily. I thought that was a nice little safety feature. Although, there's no real way to tell if it's on or off once you have the torch on, and the button is very sensitive. Other non-lighting features include a battery-power indicator (the rear LED glows red, amber or green for five seconds when you switch it on, to let you know how charged up the battery is.) I've used mine for less than an hour so far, and it's still in the green from its first charge. I'll update this review with how long a full charge lasts when I've gone through a full cycle. Lastly, you can detach the battery pack (and the front torch itself if you want) and wear them as a belt attachment. I personally prefer the light being cast wherever I'm looking, and didn't find the battery pack intrusive where it was, so haven't used this option.

The last point I want to note about this product isn't about the torch itself. It's about the user manual that comes with it. For a top-of-the-range piece of kit, the quality of the instruction manual translation leaves a lot to be desired. It's some of the worst Deutsch-glish I've ever seen. Take this excerpt for example:

It's so bad that at first I thought I might have been sent a fake item, since I couldn't imagine any self-respecting manufacturer allowing such a poorly-translated document to accompany their product. But, the supplier I used ('s) bona fides checked out. And, checking with LED Lenser's own website, it seems that they've just done a very bad job of translating the user manual of an otherwise very good product. You can read the full manual (downloaded from LED Lenser's US site) for yourself here

All-in-all, I’m glad I bought this piece of kit. It’s good enough for what I need it for. The head harness could be a little more comfortable, but it’s very usable for its intended purpose nonetheless. I feel a Petzl and other cheaper options would probably not have been bright enough for what I need. And other more expensive options would have been brighter still, but wouldn’t have been designed to wear out of water.

Not a bad purchase : 7/10

Sunday, 21 September 2014

Amazon deletes negative feedback that it doesn’t agree with - how can anyone trust a company that behaves that way?

Amazon has been lowering customer service standards for quite a while. Despite being a company that in the past has wisely avoided self-harming behaviour like spamming and ripping off customers, lately they seem to have Jumped The Shark. My recent experience with them demonstrates a Google-level degree of cynicism in their dealings with customers.

This month I purchased a couple of running tops from This is’s Amazon storefront. You may, like I was, be impressed by the 4.8 out of 5 stars averge review that other consumers had apparently given this vendor. You may also be particularly surprised to compare it with this 2.1 out of 5 stars rating from another popular independent review site. (Something I really wish I had done before foolishly trusting Amazon’s own ratings at face value.)

How did those ‘customer ratings’ get to be so different?

After receiving my running tops, in short order I received the following unsolicited email from SpamShoes (as I now think of them) -

OK, as First World Problems go, it’s right up there. But, avoiding annoying spam like the above begging for feedback and further business is one of the main reasons I’ve used Amazon in the past. Amazon has a setting in their user options that allows you to opt in to receiving reminders about leaving feedback, if you want to. Like most people, I have that option set not to bother me. I don’t use Amazon to help people build their business. I use it as a consumer for my own convenience. Period. So, when an individual vendor decides to ignore my preference and contact me anyway, that rankles.

So, I sent a response back to the vendor saying that I didn’t appreciate their spam, and reminding them that Amazon themselves will send us an email reminding us to leave feedback if we have agreed to receive one. The vendor doesn’t need to know what my preference about receiving feedback reminders is, only that I have one and would have received a reminder already if I’d asked for one. This is the response I received:

Thank you for your email,

I am very sorry that you feel aggrieved by our email, this is an automated email sent to all our customers. It's a courtesy follow up email to our customers mainly to say thank you for ordering and we hope you're happy with the purchase. But it's also a chance for any customers who may have had a problem to contact us so that we can resolve this. We are not begging for your feedback, it's just a polite reminder for you to leave some if you wish. The setting you refer to on your buyer profile, I can only assume to be for Amazon fulfilled orders only as we are unaware of any settings on your profile.

We received your negative feedback for your order, however contacted Amazon regarding this as we felt it was unfair as no spam emails have been sent. They have agreed with us, and removed the comment as they have acknowledged no spam emails were sent.

Finally, I can assure you we're a very professional vendor with a vast customer base. As I'm sure you can see from our feedback ratings, we generally do a good job which is reflected within the percentages. We'll continue to provide the service we are currently on both Amazon and our website.

Please be assured, you'll receive no further emails from our company.

Kind Regards,

Spammer doesn’t want to recognise they're a spammer shocker. Those perpetrating the act rarely choose to recognise they're doing anything wrong. No apparently doesn't mean "no" for these people. It means you must have misunderstood their intentions. Whilst they undoubtedly know deep down that they're behaving badly, they completely fail to recognise how pathological and self-defeating their behaviour is. You made a purchase from them once. So they feel entitled to invade your inbox whenever they like. They're the date rapists of the marketing world. It's no wonder they need to pay a third party like Amazon to be able to do something as simple as communicate with potential customers.    
This alone would not keep me up nights - plenty of businesses do dumb things that alienate their customers, without ever recognising how dumb or self-defeating they are. (Even when, as in this particular case, their business model is so fundamentally flawed that they actually need to sell their goods through a third party website, the only benefit of which is that it allows consumers to withhold their real address from the vendor!)

The part that does surprise me, and I believe should surprise any consumer that uses Amazon, however is that part in red where the vendor boasts about having been able to easily remove my negative feedback merely by asking Amazon to delete it.

Here is Amazon’s advice to Vendors about when feedback can be deleted. My review (which I don’t have a copy of since it was deleted) didn’t breach any of these rules. It merely stated my opinion that I had received unsolicited email from the vendor that I considered to be spam, and that as a consequence I was glad I hadn’t exposed my real address to them.

Looking around the internet, it seems like I’m not the only one that’s had a problem with their reviews and feedback being deleted. (There are plenty of other examples of negative reviews of both vendors and products that you can Google on your own if you wish.) In my case, I contacted both Amazon Customer Services and Amazon CEO Jeff Bezos to ask what their policy actually is about deleting reviews they merely disagree with (as opposed to any that breach their published rules.) In both cases, I specifically asked which of Amazon’s feedback guidelines my feedback had breached? And if none why was it deleted anyway? Customer Services merely restated that the vendor didn’t agree with my review. In Jeff’s case, there was no response at all. 

So, I’m forced to conclude that Amazon’s customer feedback ratings are nothing more than a sham. If the vendor in question ( hadn’t been dumb enough to send me further unsolicited email bragging about how easily Amazon had agreed to remove feedback they didn’t like I wouldn’t even know the review had been deleted since Amazon themselves didn’t even have the courtesy to tell me.

So, next time you’re perusing Amazon, have a think whether that ostensibly-5-star vendor you’re reading other consumers’ opinions about might really be a 2-star Del Boy outfit that’s just playing the system. And next time you’re considering whether to leave feedback about one of your purchases, positive or negative, to help other consumers. Stop to think whether you’re contributing to an honest feedback system that actually helps fellow consumers make better purchasing decisions, or merely lending validity to an artificially-whitewashed feedback system that has no credibility whatsoever.

Thursday, 20 February 2014

Scalability, Performance and Database Clustering.

What the Exxon Valdez and database clusters have in common

I was recently asked to comment on the proposed design for a project by a prospective new customer. The project involved a high number of simultaneous users, contributing small amounts of data each, and was to be hosted in the Cloud. The exact details were To Be Decided, but Amazon EC2 and MySQL were floated as likely candidates for the hosting and RDMS components. (Although my ultimate recommendations would have at least considered using SQL Azure instead, given some of the time constraints and other technologies involved that would have dovetailed into the wider solution.)

The discussion got me thinking about the topic of database clustering, as it relates to performance and scalability concerns. During the course of the discussion of the above project with the client’s Technical Director, it transpired that, despite the organisation concerned having used clustering in an attempt to improve performance previously, that approach had failed.

The above discussion didn’t surprise me. It’s a misunderstanding I’ve witnessed a number of times, whereby people confuse the benefit that database clustering actually bestows. In short, people often believe that using such a design aids scalability and performance. Unfortunately, this isn’t the case. What such an architecture actually provides is increased reliability, not performance. (It’s actually less performant than a standalone database, since any CRUD operations need to be replicated out to duplicate databases). Which is to say that if one database goes down, another is in place to quickly take over and keep processing transactions until the failed server can be brought back online.

The analogy I usually give people when discussing the benefits and limitations of clustering is that it’s a bit like the debate about double hulls on oil tankers. As you may know, after the Exxon Valdez disaster the US Government brought in legislation that stated every new oil tanker built for use in US ports was to be constructed with double hulls. The aim was admirable enough: to prevent such an ecological disaster from ever happening again. However, it was also a political knee-jerk reaction of the worst kind. Well intentioned, but not based on measurable facts.

Of perhaps most relevance to the topic was the small fact that those parts of the Exxon Valdez that were punctured were in fact double-hulled (the ship was punctured on its underside, and it was double-hulled on that surface). Added to this is the fact that a double hull design makes ships less stable, so they’ll be that little bit more likely to collide with obstacles that more manoeuvrable designs can avoid . And, just like in database clustering, the added complexity involved actually reduces capacity. (In the case of ships, the inner hull is smaller; in databases the extra replication required means less transactions can be processed in the same amount of time with the same processing power.)

As with all things, the devil is in the details. You can design clustered solutions to minimise the impact of replication (e.g., if you make sure the clustered elements of your schema only ever do INSERTs, the performance hit will be almost negligible). But, many people just assume that because they are clustering that in itself will automagically increase performance, and it’s that misconception that leads to most failed designs.

I’ve been involved in a couple of projects that involved either large amounts of data in one transaction impacting on a replicated database, or large numbers of smaller individual transactions being conducted by simultaneous users. In neither case, in my experience, was clustering a good solution to the design challenges faced.

The first project I have as a point of reference was one I worked on back in 2007, that involved a business intelligence application that collected around a million items of data a month via a userbase of 400 or so. I was the lead developer on that 7-person team, and so had complete control over the design chosen. I also had the advantage of having at my disposal one of the finest technical teams I’ve ever worked with.

The system involved a SQL Server database that was used by around 30 back office staff, OLAP cubes being built overnight for BI analysis, and certain sub-sections of the schema being replicated out to users that accessed the system via PDAs over GPRS (which of course will have been replaced by 3G / 4G now). The PDA users represented the bulk of those 400 users of the system.

The design we settled upon was one that traded off normalisation and database size for the least impact on those parts of the schema that needed to be replicated out to the PDAs. So, CRUD updates made in the back office system were only transferred to near-identical, read-only tables used by the PDAs once an hour (this could be fine-controlled during actual use to aid performance or to speed up propagation of information as required). This approach meant that the affected tables had less sequential CRUD operations to be carried out whenever the remote users synched over their low-bandwidth connections. And if they were out of range of connectivity at all, their device still worked using on-board, read-only copies of the backoffice data required.

The second main consideration in the design involved a large data import task that happened once every six weeks. One of my developers produced a solution that was algorithmically sound, but that quickly reached the limitations of what an ORM-driven approach can do. In short, it took several hours to run, grinding through thousands of individual DELETE, INSERT and UPDATE statements. And if any consistency errors were found in the data to be imported (which was not an uncommon occurrence) the whole process needed to be gone through again, and again, until eventually it ran without hiccups. It wasn’t uncommon to take a skilled DBA 24 hours to cleanse the data and complete the import task successfully. Meanwhile, the efficiency of those replicated parts of the schema used by the PDAs would be taking a battering. A better approach was needed.

In the end, I opted for using SQL Server’s XML data type to pass the bulk upload data into a stored procedure in a single transaction. Inside the procedure, wrapped in a reversible TRANSACTION, just those parts of the data that represented actual changes were updated. (E.g., it wasn’t uncommon in the imported data to have a DELETE instruction, followed by an INSERT instruction that inserted exactly the same data; the stored proc was smart enough to deal with that and only make those changes that affected the net state of the system). I designed the stored proc so that any errors would cause the process to be rolled back, and the specific nature of the error to be reported via the UI. The improved process ran in under a second, and no longer required the supervision of a DBA. Quite a difference from 24 hours.

The second project that informs my views of clustered database designs was one that I wasn’t the design authority on. In this case, I was just using the database(s) for some other purpose. Prior to my involvement, a SQL Server cluster involving three instances of the database was set up, and kept in sync. The solution was designed for use by a vendor of tickets for all sorts of events, including popular rock concerts. It wasn’t an uncommon occurrence for the tickets to go on sale, and for an allocation of many thousands to be sold out in literally ten seconds flat, as lots of fans (and I’m sure ticket touts too) sat feverishly pressing F5, waiting for the frenzy to start. (And sometimes, if the concert organiser got their price point wrong, you’d find that only a few tickets were sold for an over-priced event, but that’s another story!)

In the case of this design, I never did see the failover capabilities come into play. Which is to say that each of the three SQL Server instances that replicated the same data for reliability reasons all stayed up all of the time. I had a feeling that if one ever went down for reasons of load, however, it wouldn’t have been long before the others would have suffered the same fate. And since it was an on-premise deployment rather than being cloud-based, something like a power cut would have stopped the show dead.

It’s not that common for hardware to fail just because a high number of requests are being made simultaneously. All that will happen is that some users won’t get through (and you as the site owner will never know that was the case). It’s not like the server will shut down in shock. Even the recent low-tech attacks to large online retailers like Amazon using amateur tools like LOIC didn’t damage any critical infrastructure. At best, such conditions can saturate traffic for a short while. And often they don’t achieve even that much.

As a final point, I’d note that there are far greater concerns when designing an authenticated, public-facing system, such as CSRF vulnerabilities. Any attempt to address performance concerns by using clustering will inevitably adversely affect those security concerns. Because commonly-accepted solutions to same typically rely on data being reliably saveable and retrievable across short time frames (rather than getting in sync eventually as most clustering solutions allow for).

So, in summary, whilst there’s a place for database clustering for reasons of reliability, my earnest advice to anyone considering using that design for reasons of performance or scalability is to reconsider. There are usually changes you can make to your database schema itself that will have the same or better impact on the amount of data you can cope with in a short timeframe, and the impacts that data will have on your wider design. Don’t end up like Fry from Futurama, lamenting how your design might have worked had you only used (n+1) hulls/servers rather than n :