Consulting

I’ve been a tech consultant for several years. Having come from a long history of CxO-level roles, head-of-this, chief-of-that, chair-of-the-other, I find myself, for the first time, alone. I still have busy days engaging with people, my inbox is as hectic as ever, the IM pings are continuous and my schedule isn’t pretty. Working in teams is something I miss but I’m fortunate that many of my most trusted colleagues have remained in touch. Travel is a thing of the past, thankfully (as it was becoming tedious). There’s nobody to whom I can delegate and nobody to whom I must report other than my clients.

During a recent meeting with some people at a government agency that is tasked with providing advice and tangible support to small businesses I was reflecting on the nature of my role as consultant. They remarked on something I’d observed over the years: great business leaders will recognise their limitations and reach out for help. In the larger companies, that help can often come from within. For the smaller companies, they have to look outside. This is where these government agencies and occasionally consultants like me come into the picture.

Mine is the advice/opinion kind of consultancy, not the executive kind that involves management/oversight. Offering advice is hard work. “Well, he would say that, wouldn’t he?” I look at where a company is, and where it wants to be. Then I ask some probing questions. Then I listen. Followed by some research, probably some more questions and finally I offer reasoned suggestions to get the company from here to there.

Listening is the hardest part. It consumes a lot of time. It’s also a part of the process that I really enjoy because I learn so much. Sometimes a round-table session with the company’s senior staff is the first time they’ve collectively tried to explain to an outsider what they do and how they do it. Such a session can be an opportunity for staff to learn more about the operations of other functions in their company. The CEO is usually involved in these meetings, and will often find them enlightening.

It has taken decades for me to acquire the knowledge and experience to do what I do. I’m so glad to see the positive impacts that result, and I look forward to continuing this work for years to come. Onwards and upwards!

Energy

Despite general agreement that lower energy consumption is a “good thing”, on reflection this doesn’t seem to be a real motivator. Convenience, cost, comfort; those could be the real drivers. At least, that’s my observation with respect to my own personal circumstances.

I recently switched to an all-electric car. Was this to save the planet? Was it to reduce pollution? Honestly, no. I just don’t like noisy cars, but range anxiety has kept me away from e-cars for a few years. Until now, when ranges over 400km per charge became available. Now my trips to clients, or even just down to the supermarket, are pleasurably quiet. A 200km round trip the other day was sheer delight. Fuel costs are much lower (less than 25%!), tax is low, maintenance costs are expected to be low, and I even get discounted road tolls. Saving the planet is just a nice by-product.

My workspace has several screens, but I only turn on the ones needed at any given moment. Saving power? No, I just don’t like the glare.

I don’t have a regular commute, so public transport doesn’t figure much in my life, but I do take the bus from time to time. This isn’t because I want to avoid contributing to congestion but because the city is already congested and finding parking can be a pain. Not to mention the advantage of being able to have that glass of wine with my meal, given that I’ll be chauffeured home.

Locally produced fruit/veg is preferred to long-distance imports because it tastes good, not because it avoids the haulage pollution.

What I’ve come to understand is that while it’s nice to feel “green”, much of what motivates us has nothing to do with the long-term societal outcomes. That’s how it seems with regards to energy consumption.

If only I had a good explanation for what motivates me to spend so much time carefully separating my recyclable waste…

Local dev cert

Testing Web services in a development environment over SSL/TLS (HTTPS) can be a problem if your development environment doesn’t have a suitable SSL Cert. In such cases, creating a self-signed cert is usually sufficient, but you have to ensure that your client applications (including browsers) trust the cert you created yourself.

Here’s a recipe for creating a self-signed certificate and installing it into Firefox so that the Developer window doesn’t fill up with warnings (such as about Strict-Transport-Security headers being ignored). The recipe assumes you have keytool (usually in the “bin” of your JDK). This is for Windows, but similar steps apply to other OSs.

keytool.exe -genkey -alias selfsigned -keyalg RSA -keysize 2048 -sigalg SHA256withRSA -validity 3650 -keypass password -keystore selfsigned.jks -storepass password

keytool.exe -importkeystore -srckeystore selfsigned.jks -destkeystore selfsigned.p12 -srcalias selfsigned -srcstoretype jks -deststoretype pkcs12

Obviously choose a better password. At the end of these two steps you should have a selfsigned.p12 file. If you want a .pem file you can obtain one as follows using openssl:

openssl pkcs12 -in selfsigned.p12 -out selfsigned.pem

Now run Firefox, select “Options” from the menu, then the Security section and find the bit where you can View Certificates. In there, import the .p12 file into “Your Certificates” (and you’ll be asked for the password). When you visit a server using your cert for SSL, such as one installed on localhost, Firefox will issue a warning, but you can tell it to make an exception by following the instructions that appear. From here on you will be able to visit your local dev server and not see too many security errors in the DevTools console, which allows you to concentrate on other important things.

Before you deploy to production, it makes sense to test using real SSL certs, and for this you could pay a visit to Let’s Encrypt and get a genuine cert completely free. You’ll need a genuine domain to use LE.

Warning

Sometimes the only way to get a development tool installed is to compile it from source. In fact, many Open Source projects will assume this is how you intend to install. Some nice people out there might actually compile it for you and make the binaries available, but unless you have 100% trust in whoever is supplying these, compiling from source might be the best route. Perl, my Swiss Army Knife of choice, has many contributors offering modules that go through an elaborate compile/configure/test routine. Such installation processes can take a few minutes to complete, which is often a good excuse to go get a coffee.

The build scripts accompanying such from-source resources often include liberal dollops of commentary that appears briefly on screen before scrolling out of view. Since these are from tried-and-tested supplies, we expect such messages to be generally reassuring. After all, if there were problems then surely this material would not have been recommended for me to use.

During development it would be normal for the developer to be verbose in the commentary. Error messages in particular, especially as such a message may be the only one you will see before the whole build grinds to a halt, and so you’ll probably need a lot of precise information to help solve the problem that caused the error.

Warnings, on the other hand, don’t slam on the brakes. They just let you plough on through, hopefully leaving the developer with a hint regarding some possible problem that just might need to be examined before letting this material loose on an unsuspecting world. Of course, tests that are performed later in the build might confirm that the earlier warning was not really a problem after all. Good. One warning that can be ignored.

Usually what happens is the developer lets the warning continue, knowing that it’s not really a problem. A warning about loss of accuracy when assigning a floating point number to data type with less decimal places is not a problem when the developer knows that the data in question is only accurate to one decimal place anyway. A warning about an API call being an unofficial internal method is not a bother to a developer who is in fact an insider responsible for the API. Yes, the parameter’s documentation is missing, but it’s already explained in detail in the preamble. Sure that method is deprecated but there are solid reasons for using it in this case. Possible fall-through to default case? But of course, I intended it that way!

And on it goes. Warning after warning. Each being left in place with not even a cursory attempt to mollify the compiler. In most cases there are simple actions that can be taken, such as a small code adjustment or (at worst) inserting of a directive to tell the compiler not to complain about it. (Such adjustments should always be accompanied by developer comments to justify them.)

During development, a newly generated warning could get lost in a sea of existing warnings and thus lead to a later bug that could easily have been avoided.

Finally, the material lands in my lap. Or more correctly, cloned to my system from the master repository. To install it, I must run the build. The developers have already done their tests and the results show that all those warnings are not a problem. When building on my system, if there are problems specific to my context that warrants a warning, then I want to see if. Being told that a certain font is missing from my computer and may lead to garbled messages is the kind of warning that should attract my attention, though if the message is in Japanese then the font is the least of my problems. Sadly, instead of only seeing warnings that might be of use to me, as the user, I invariably get hundreds, perhaps thousands, of warnings that only make sense to the developer.

Why am I mentioning this now? Today I cloned and built Netbeans 10 from source. It’s a massive project with 100s of contributing developers. The build process took nearly an hour. I compiled it from within N8.2. The build log contains over 22,000 warnings (based on a quick grep and count). I tried skimming the log to see if any of these warnings might need my attention. Checking over 22,000? No chance. I gave up.

Warning: number of warnings has exceeded user tolerance.

Turmoil

/ˈtəːmɔɪl/A state of confusion, disturbance or uncertainty. A very apt word, not for the word games I was playing over the holidays, but for everything else that’s going on around us. Facing in one direction I find my British cousins, friends, co-workers, or at least neighbours, convulsed in the throes of Brexit. The consequences of this poorly formulated plan to extract the United Kingdom of Great Britain and Northern Ireland from the European Union project are vague at best and potentially disastrous at worst, and it seems that no matter what happens, roughly half of the UK citizens who express opinions on the matter will be disappointed. It’s an unhappy state of affairs, and not likely to get better any time soon.

If I do a 180 and look towards that other horizon I discover another world of chaos in the United States of America, that amazing place mostly located in the northern part of the American continent and comprising such a wonderful mix of people of all kinds, colours, creeds and outlook, all in perfectly balanced disagreement. As I write this, a sizeable chunk of their government has pulled down the shutters while various political factions argue over who is to blame and where their priorities lie.

The world abounds with instability. East, West, North and South. A lot of it is political. A lot is economic. It dredges up historical conflicts and gives them new, unwelcome, impetus. Like motes in a simmering pot, we are having our own personal Brownian motion experience, not knowing which way we’ll be going from one moment to the next.

While all this is going on, there’s another pot boiling and it’s also world-wide. In fact, it is the planet itself. All of the evidence is clear, at least to those who accept the veracity of such evidence, that our pale blue dot is having a bit of skin trouble. Skin? Well, the troposphere (where the weather happens) is about 12km high on a planet that is a bit over 12,000km in diameter, so what we consider to be the air around us is a mere 1/1000th of the planet’s thickness, which I liken to a quarter millimetre skin of paint on a basketball. Just picture that and contemplate how fragile our climate must be.

It’s no wonder that businesses, large and small, appear to be on a roller-coaster. Quick swings up as sudden opportunities arise from other people’s misfortune, and equally steep falls as those same misfortunes rebound in this hyper-connected world. Tariffs and barriers appear with alarming frequency, yet the negative consequences only seem to encourage more of the same. Critical thinking is in short supply.

Those with oodles of money in their pockets make bold claims about planning to leave the planet and settle on Mars, and while most of us laugh at such proclamations there’s an increasing number of people that genuinely wonder if this isn’t such a bad idea.

But…

There’s always a “but”. Usually to burst someone’s balloon, though in this case to point out that all is not necessarily as gloomy as the picture above would suggest.

While the reports surrounding Brexit might give the impression that the British have gone stark raving mad, there’s plenty of contrary evidence that many of HRH’s subjects have taken the opportunity of the past two years to be more informed and do some thinking. The implications of acting upon the advisory referendum of 2016 are now more clear, and an enlightened majority appear to be pressing hard to act upon this new-found knowledge to avoid the shambles we’re increasingly referring to as the “no deal exit”. It remains to be seen if this emerging momentum can sway the machinations of those who govern, and do so in time, but at least there is hope.

Meanwhile, shifts in the balance of power (or at least influence) in the American continent, the USA in particular but not exclusively, could see completely new dynamics at play over the next 2+ years which hopefully will lead to better relations with their neighbours and easing of trade tensions with just about everywhere.

The churning in the world of commerce is ever-present, and when one venture flounders another launches. Even the recent alarm over the faltering fortunes of Apple could be no more than growing pains as it morphs into a predominantly services-oriented company. It’s also inevitable that the nature of work itself needs a big re-think, especially when so many “traditional” jobs are being replaced by automation and artificial stupidity. (Calling it “intelligence” is still a bit of a stretch for me.) Already we can see many universities proclaiming that they are preparing young people for careers that don’t even exist yet. No negative thoughts there for sure.

As for the impending demise of the planet, even that isn’t all doom and gloom. It may seem to some that the faltering Paris Agreement and related initiatives may be too late, the focus on big-picture carbon emissions (mainly oil and coal) may have missed some tricks: food, education and fridges. The Drawdown Project examines all the ongoing initiatives that are both inherently desirable and positively impactful on the climate, and has compelling data that shows that if we combine and maximise the best of these initiatives we can indeed deal with the climate challenges. In the food area the reports highlight food waste, better use of plant-rich diets and the mixing of trees with traditional pasture lands. Electricity generation includes having solar panels on roofs and on land that’s not good for food production, and there’s strong support for onshore wind turbines. Properly dealing with refrigerants when disposing of fridges and air conditioners will, according to the Kigali Accord, be the most effective industrial action to deal with climate change.  But highest of all is the societal action of providing better education and family planning to millions of girls and young women who currently can only dream of such access, because the consequence of these actions would be to reduce population growth (and hence the carbon footprint), reduce maternal mortality, improve life-long health and increase productivity.

So, as we stumble into 2019 we find on the one hand that we have the potential to make a monumental mess of everything, and on the other hand we have the power to solve all our problems.

Or we could hitch a ride to Mars.